猫史档案馆


【岛三教程】逐字对话框!

用户:爱探险的可乐呀爱探险的可乐呀查看:28 回复:19 评论:28 创建时间:2021-06-06T08:53:44


嘿大家好这里可乐

大家应该都知道岛3的对话框吧?

但是对话框都是一下子全部把文字显示出来那有没有一种方法

能把对话框的文字

一个字一个字地输出呢?

答案是:有!

那么废话不多说

开始我们今天的教程!
-----------------------------------------------------------------------------------------------------------

这次的代码逻辑很简单

就是用多个对话框来完成操作

咱们先写一个函数方便调用

async function dialog (entity,title,content,time) {

}

为啥要用异步呢?

等会就知道了

咱们先在函数里面定义两个变量

k是一个空字符串,方便之后做content

w是次数

var k = '';
var w = 0;

咱们一开始要先遍历字符串的每个字符

那我们用啥呢?

当然是 for循环

这样可以简便地遍历字符串

for (var i of content) {

}

接下来 就到了重点部分啦!

我们把k加上i

如果这个content是 啦啦啦!可乐在这里!

那么 i第一次是'啦' k第一次是'啦'

i第二次是'啦' k第二次是'啦啦啦'

······

i第五次是'可' k第五次就是'啦啦啦!可'

以此类推哦

然后次数也要加一

for (var i of content) {
    k += i;
    w++;
}

然后直接用岛三默认对话框

for (var i of content) {
    k += i;
    w++;
    entity.player.dialog({
        type:Box3DialogType.TEXT,
        title,
        content:k,
    });
}

然后呢?

就结束了吗?

没有哦!

一定要加等待时间

这就是我要加异步的原因

逐字输出一定要加等待

time参数我们可以作“秒”来用

所以sleep的参数要乘1000

for (var i of content) {
    k += i;
    w++;
    entity.player.dialog({
        type:Box3DialogType.TEXT,
        title,
        content:k,
    });
    await sleep(time*1000);
}

之后

总不能让这个对话框一直在这里吧

那么我们的次数君就有了用场!

如果次数还小于content的长度的话

也就是对话框没有弹出完毕 那么就取消对话框

大家还记得“取消对话框”代码怎么写吗?

是这样的↓

entity.player.cancelDialogs();

所以就要这样:

if (w < content.length) {
    entity.player.cancelDialogs();
}

来一个完整代码:

async function dialog(entity, title, content, time) {
    var k = '';
    var w = 0;
    for (var i of content) {
        k += i;
        w++;
        entity.player.dialog({
            type: Box3DialogType.TEXT,
            title,
            content: k,
        });
        await sleep(time*1000);
        if (w < content.length) {
            entity.player.cancelDialogs();
        }
    }
}

(代码萌新最好不要白嫖哦,要清楚代码原理)

然后再调用那么一下下~

world.onPlayerJoin(async({ entity }) => {
    dialog(entity,'我是标题','啦啦啦!可乐在这里!',0.15);
});

好了这就是本期教程的全部内容了~

你学废了吗?

那我们就下期再见咯!

拜拜~


回复

上一页1 页 / 共 1下一页
Architect_皮卡awaArchitect_皮卡awa

sofa

点赞0


评论


爱探险的可乐呀爱探险的可乐呀

点赞0


评论


Architect_皮卡awaArchitect_皮卡awa

点赞1


评论


Architect_皮卡awaArchitect_皮卡awa

点赞0


评论


yuansyuans

我喵

点赞0


评论


./'./'

//找茬:下面的代码有啥问题?

function dialog(entity, title, content, time) 
    var k = '';
    var w = 0;
    for (var i of content) {
        k = i;
        w++;
        entity.player.dialog({
            title,
            content:
        });
        await sleep(time*1000);
        if (w < content.length) {
            entity.player.cancelDialogs();
        
    }
}

点赞0


评论


1232RvE1232RvE

……

点赞1


评论


1232RvE1232RvE

这谁都会的吧

点赞1


评论


该账号已被封禁该账号已被封禁

我是代码大佬我要白嫖(

点赞2


评论


codewyxcodewyx

emotion_编程猫_点赞

点赞1


评论


./'./'

const undefind = /^找茬:以下代码有什么问题?/

function dialog() { 
    for (var i of content) {
        k += i;
        w++;
        entity.player.dialog({
            type: Box3DialogType.TEXT,
            title,
            content: k,
        });
        sleep(time*1000);
        if (w < content.length) {
            entity.player.cancelDialogs()

点赞1


评论


成熟的强袭编程猫548成熟的强袭编程猫548

az

点赞0


评论


指令者指令者

666

点赞1


评论


爱探险的可乐呀爱探险的可乐呀

// 几个月以前的帖子了,我还是要修正一下代码
// 本人测试,星雪(@抄盗代码全家安详)的代码不能用()()
// 所以你们可以用我的代码,对话框不会乱码!
// 现在也修复了对话看不完的问题,可放心使用!

async function dialog(entity, title, content, time) {
    var k = '';
    var w = 0;
    for (var i of content) {
        k += i;
        w++;
        entity.player.dialog({
            type: Box3DialogType.TEXT,
            title,
            content: k,
        });
        await sleep(time*1000);
        if (w < content.length) {
            entity.player.cancelDialogs();
        }
    }
    await entity.player.dialog({
        type: Box3DialogType.TEXT,
        title,
        content,
    });
}

//例子
world.onPlayerJoin(async ({ entity }) => {
    await dialog(entity, null, `你好,${entity.player.name}。`, 0.1);
    await dialog(entity, null, 'Hello!', 0.1);
});

点赞0


评论


Architect_传闻中的球Architect_传闻中的球

主动投币(划掉   拒绝白嫖()()()

点赞0


评论


全能代码师全能代码师

打字机效果(

点赞0


评论


yee剑走天下yee剑走天下

挖?()

点赞0


评论


暗夜极光暗夜极光

挖()

点赞0


评论


夜影行者夜影行者

收藏

点赞0


评论