《如何较为优雅地实现新手引导功能》已经完成95%了,今天再透露一点关于定位器、引导步骤的细节:
在实际开发会遇到这样一种现象,发出了一个节点定位指令,但此时节点并未出现在场景中,我们可能到的是一个null,因此还需要将godGuide.find函数设计成一个异步回调函数,当第一次定位不到时,间隔一定时间再次定位节点。
godGuide.find('Home>layout/btn_home', (error, node) => { cc.log('定位节点成功:', node.name); });
godGuide.find 内部设置一个超时,通过error返回错误。
肯定有人会想,难道就是用定时器不停的检测,这也太Low吧!请别急,Shawn这里为每一个步骤还设计了可编程的回调事件,看下面:
步骤生命周期回调
串行多个异步函数,这里为 step 设计了onStart、onEnd两个生命周期回调分别在上面 stepStart 和 stepEnd 中去执行,我们可以在这两个函数中一些初始化操作或等待操作,例如:
在onStart中等待玩家等级达到多少级,或某个事件发生;
在onEnd中等待服务器返回的某个消息,或操作后某个动画的完全成。
{ ... steps: [ { desc: '玩家到达10级,触发道具购买引导', //步骤开始 onStart(callback) { let obj = {}; //监听玩家等级变化 cc.director.on('player-lv-up', (player) => { //到达10级,显示商店界面 if (player.lv >= 10) { cc.director.emit('show-shop'); //移除事件监听 cc.director.targetOff(obj); //执行回调,执行步骤指令 callback(); } }, obj); }, command: {cmd: 'finger', args: 'shop > butBuy'} ] }
到目前为止,已经有53伙伴预订,今天同时公众号再送出10份,还差17份订阅!
扫码订阅,感谢你的支持!
下面公布活动中奖的10位伙伴名单,将免费活动本篇Chat:
lucifer
Thomas
李惠来 larry
dcy
啊呦呦
Mr.Xue
墨风
Constantine
dcy
迷失的帆板
还烦请名单上的伙伴加我微信,我将Chat链接赠送各位!