用户:
爱探险的可乐呀查看: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);
});
好了这就是本期教程的全部内容了~
你学废了吗?
那我们就下期再见咯!
拜拜~
./'//找茬:下面的代码有啥问题?
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
评论
./'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
评论
爱探险的可乐呀// 几个月以前的帖子了,我还是要修正一下代码
// 本人测试,星雪(@抄盗代码全家安详)的代码不能用()()
// 所以你们可以用我的代码,对话框不会乱码!
// 现在也修复了对话看不完的问题,可放心使用!
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
评论