目录 记录点协议⑤
不懂这是什么的小伙伴建议先看初始化流程①哦~
记录点协议(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);
}
});
}
|