Box3EventFuture / GameEventFuture

这是一个服务端API

该API仅在服务端脚本使用

查阅官方文档藏得真深
查阅官方文档(Arena)

/ 是使用监听事件的方式
/ 用于监听单次事件,当监听到事件时,会将EventType返回

警告

异步代码生成的错误不会显示堆栈跟踪,这可能会加大调试的难度

(人话:只有报错但没有给出代码位置)

提示

在使用此API前,建议先了解

/ <EventType> = (filter?: (event: EventType) => ) => <EventType>

使用,等待事件触发

参数 类型 说明
filter? (event: EventType) => 选填,用于检查事件是否满足条件
若该回调函数返回true就会兑现;否则继续等待下一次事件触发
若不填,则只要事件触发就会兑现
返回值 类型 说明
<EventType> 一个。当符合filter的事件被触发,这个就会兑现
示例
// 等待2个玩家进入世界,宣布“游戏开始”
async function waitForPlayers (count) {
    while (world.querySelectorAll('player').length < 2) {
        const { entity } = await world.nextPlayerJoin();        // 注意不是onPlayerJoin
        world.say(entity.player.name + ' 加入游戏');
    }
}
waitForPlayers().then(() => world.say('游戏开始'));
// 等待进入的玩家按下Action1键
world.onPlayerJoin(async ({ entity }) => {
    await entity.player.nextPress(({ button }) => button === 'action1');    // 注意不是onPress
    console.log(entity.player.name, '按下Action1键');
});
// 等待进入的玩家按下Action1键
world.onPlayerJoin(({ entity }) => {
    entity.player.nextPress(({ button }) => button === 'action1')           // 注意不是onPress
    .then(() => console.log(entity.player.name, '按下Action1键'));
});

评论区