新手引导的一些实现想法

对于全遮罩固定流程必做的新手引导可以试下这种方式:
1.程序初期框架设计好,尽量降低耦合性。通讯与显示严格分离。
2.前台后台各配置好新手引导信息文件,前台主要是一些显示、位置、对应操作序号等信息。后台是每一步新手操作后数据变动信息。
3.将新手引导做成模拟操作。做一个位于顶层的新手引导层。比如点击某个按钮弹出对话框,或者打开某一界面的功能,相当于点击到新手引导层对应位置,然后根据数据发送模拟信息,完成操作后,返回后台,后台记录当前状态信息。
4.除个别特殊操作,一般的修改新手以及加步骤都可以让策划直接修改配置文件即可。
5.当点击引导层对应位置时,通过界面Controller发送监听事件调用实际点击按钮事件,事件成功发送小step完成消息进行下一步引导,需要将Controller进行注册
6.解决新手引导层如何获取当前需要点击的按钮位置,可以通过配置json对应的按钮WidgetName进行寻找
7.将功能开启引导和前期强制引导区分,制定bigStep 和smallStep ,配置成链表形式,完成step进行服务器同步,完成还原操作
8.解决新手引导中滑动操作和常按操作引导的问题

那一张新手引导表格需要哪些内容呢?这就需要设想新手引导会遇到哪些问题:
1、同步服务器?告诉服务器我完成到了哪一步,一次来获得相应奖励或判断完成新手引导
2、重启游戏后继续引导?因各种原因重启游戏后,需要从上次中断处继续引导,第一个问题解决了,这个问题也好解决
3、游戏随机性大,如何确保引导不出问题?因为新手引导需要确保流程的通畅,以为游戏中的偶然因素需要排除。可能需要做一些特殊的处理,比如构建一些虚拟数据来取缔原来的游戏随机数据
4、如何指引特定界面的特定按钮?如何确定上一步指引打开了指定界面,并且当前指引了特定的按钮

带着以上问题,我们来设计引导表格:
指引id。id有两个作用,第一个是用于客户端与服务器的同步,第二个是方便客户端使用id做特殊处理。这是为了解决问题1、2、3。
类型变量type。他的作用是指明这是什么指引类型(对白or操作指引)
指引所在场景ui。解决问题4。
指引按钮widget。解决问题4。
是否同步sync。解决问题1。
当然表格里还可以有其它内容,比如显示的图片路劲,文字内容以及面对各种复杂情况的需求(实际解决问题的时候,自行扩充吧),以下图片进行参考:
这里写图片描述

假设我们需要指引玩家签到,正常流程是在主场景或主UI(MainScene)上点击签到按钮(btnSign),签到界面(SignUI)打开后,点击签到(btnOK),最后关闭签到界面(btnClose)。注意,如果玩家在1002步点击了签到按钮,这时候他退出了游戏,重进游戏后,应当判断他完成了签到指引而跳过1003步。所以1002步上传给服务器的同步id应该是1004。这样,重启游戏时,客户端从服务器获得同步id1004,从1004继续指引。

猜你喜欢

转载自blog.csdn.net/zhenyu5211314/article/details/78357160