新增修改
##1. 修正微信小游戏上报错问题
##2. 移除对cc.Toggle组件的依赖
##3. 修正自动引导失效问题
##4. TypeScript支持
##5. 新手引导开放源码
#公众号上回复【新手引导源码】即可获得
早期的项目中Shawn遇到游戏终于要完成了,辛苦了一阵满以为可以稍微放松一下了,但策划、运营要求,增加一个他们认为非常“简单”且重要的功能:新手引导。
回想起当年,接到这个任务时的感觉是手脚冒汗、天晕地暗、日月无光,游戏代码本来就千疮面孔,逻辑错综复杂,根本不知道该怎么下手?更困难的是,游戏本身功能和需求还不稳定,老板随便一个想法可能就会被改、改、改…,我该怎么办?
在这种情艰难的情况下一定要,需要保持冷静,在痛定思痛之后,我开始了引导功能的开发,在做的过程中一不断积累,编写了一套配置式、可编程的引导框架,然后交给其他开发人员或策划人员做具体的引导内容,真的是“杀不死你的会使你更强大”。
下面是我使用Cocos Creator 官方 demo-ui 工程上嵌入的引导案例演示:
demo体验地址:
http://example.creator-star.cn/demo-ui
引导配置:
module.exports = {
name: '进入商店',
debug: true,
autorun: true,
steps: [
{
desc: '点击主界面主页按钮',
command: { cmd: 'finger', args: 'Home > main_btns > btn_home'},
delayTime: 1,
},
{
desc: '点击主界面设置按钮',
command: { cmd: 'finger', args: 'Home > main_btns > btn_setting'},
},
{
desc: '点击主界面商店按钮',
command: { cmd: 'finger', args: 'Home > main_btns > btn_shop'},
},
{
desc: '点击商店充值按钮',
command: { cmd: 'finger', args: 'Home > Shop > btnCharge'},
delayTime: 2
},
{
desc: '点击充值界面关闭钮',
command: { cmd: 'finger', args: 'chargePanel > btn_close'},
delayTime: 2
},
]
};
节点定位器
上面配置中看到的“Home > main_btns > btn_home”我称之为节点定位器,使用它可以简单、精确、稳定地表达场景中的任意节点。
引擎提供了 cc.find 函数,传入节点路径可搜索出 Canvas 下任意节点,如下图所示:
使用
cc.find('Canvas/Home/lower/main_btns/layout/btn_home')
节点路径字符串可以精确定位到btn_home节点,但在实际使用中时会感觉很繁琐:
- 字符串太长,容易出错;
- 节点名字、层级变化,节点路径字符串就失效了,容易被误伤。
为了使路径表达更简洁可靠,笔者引入了两个定位符号:
/: 右斜杠,代表1级子节点(与cc.find相同)
>: 大于符号,表示1~n级子节点
可以将上面btn_home节点的定位符改为
godGuide.find('Canvas > btn_home');
如果我们默认从Canvas节点开始检索,也可以直接写成下面这样:
godGuide.find('btn_home');
这样将从 Canvas 节点一层层开始遍历,想提高检索节点的效率可以改为:
godGuide.find('Home > main_btns > btn_home');
如果场景中有同名节点,也可以使用 '>'
符号解决,但同一层级不能有同名节点(如果你需要引导的话)。
'>'
符号也可与'\'
混合使用,如下:
let btn_home = godGuide.find('Home>main_btns/btn_home');
let btn_level = godGuide.find('Home>main_btns/btn_level');
需要注意的是,节点名命不要使用'>'
、'\'
这两个字符 。
自动执行引导
引导的测试工作效率低下,既然有了可配置的引导,能否让它自动去执行呢?
录制操作流程
如果引导类能监听任意节点事件,获取节点全路径,是否可以代替人工配置呢?
Chat 大纲:
本篇 Chat 从开发痛点出发,在 Cocos Creator 项目中使用一种 配置试、可编程的新手引导编程体验,你会获得下面收获:
分离引导与游戏之间的逻辑
- 引导操作流程分析
- 上帝模式—观察场景中任意节点与事件
- 任务式引导 task 与 step
- 引导任务的 JSON 式表达
点击操作的引导实现细节
- 节点定位器的实现
- 节点遮罩的实现
- 触摸事件的拦截与放行
- 目标节点触摸完成监听
设计一个简易的引导任务框架
- 引导框架—串联异步引导步骤
- 引导步骤—步骤生命周期回调与指令
- 指令设计—实现手指动画指令
自动化引导更多的可能性
- 浏览器自动引导实现
- 录制游戏的操作流程
- 基于引导任务的自动化测试
GitChat 分享卡:
GitChat文章需要80人参与预订才能通过,到目前为止已经有43位伙伴,如果你觉得以上的内容对自己或他人有所帮助感谢订阅或转发,在此感激不尽,你的支持是我创作的最大动力
##增加文本指令,配置如下:
{
cmd: 'text'
args: [
'欢迎体验Shawn的新手引导框架',
'本案例演示:\n1.文本提示指令\n2.手指定位指令\n3.自动执行引导\n4.点击操作录像',
'首先,请点击首页按钮'
]
}
演示视频更新,在线体验更新
###演示视频:
http://v.youku.com/v_show/id_XNDI3NzY4MzMyMA==.html
(点击去优酷观看)
###在线体验地址:
http://example.creator-star.cn/demo-ui-autorun
新增修改
##1. 修正微信小游戏上报错问题
##2. 移除对cc.Toggle组件的依赖
##3. 修正自动引导失效问题
##4. TypeScript支持
##5. 新手引导开放源码
#公众号上回复【新手引导源码】即可获得