[开发者心得] 坤坤出品|PrefabEvent二次开发教程——记录点协议⑤

[复制链接]
1482 |0
森林鹿 发表于 2023-3-6 14:43:13 | 显示全部楼层 |阅读模式
目录
记录点协议⑤


不懂这是什么的小伙伴建议先看初始化流程①哦~

记录点协议(PrefabEvtRecordPoint)

这个协议主要用于通知记录点去改变自己当前的位置、以及设置当前的关卡信息给予玩家系统来记录当前的关卡位置,通过backCurrentRecordPoint这个API去回到当前玩家系统记录的关卡。
同时这里提一下DBServerTool,DBServerTool是一个存储协议,用于存储各种玩家的信息,在收集物、记录点中都可以使用到,在存储时一般使用player的SystemId来作为第一参数,第二参数使用对应协议的名字,最后一个参数为需要存储的值,而在取出时就只需要前两个参数就可以拿到之前存储的值了。

示例-跳关并过去到下一关:
这里的示例需要安装玩家系统记录点预制体。

通过存储协议先获取到当前的关卡,然后将这个值增加后就传送到了下一关卡。需要注意的是不要超过了当前设置的记录点的数目。

if (Util.SystemUtil.isServer()) {
    //获取触发器
    let trigger = this.gameObject as Gameplay.Trigger;
    trigger.onEnter.add(async (chara: Gameplay.Character) => {
        //检查是否是玩家进入了触发器
        if (chara instanceof Gameplay.Character) {
            //获取这个玩家当前的记录点位置
            let stage = await PrefabEvent.DBServerTool.asyncGetValue<number>(chara.player.getUserSystemId(), PrefabEvent.PrefabEvtRecordPoint.name);
            //将关卡增加到下一关
            stage++;
            if(stage > 2){
                return;
            }
            //保存关卡数据
            PrefabEvent.DBServerTool.asyncSetValue(chara.player.getUserSystemId(), PrefabEvent.PrefabEvtRecordPoint.name, stage);
            //回到当前的记录点位置
            PrefabEvent.PrefabEvtRecordPoint.backCurrentRecordPoint(chara.guid);
        }
    });
}



回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表