新手引导
新手引导
介绍#
新手引导系统由以下部分构成,其中多边形遮罩可自由选择是否使用
新手引导管理器#
负责引导流程的启动、暂停、跳转等功能
- 多实例支持:可同时运行多个独立引导流程
- 灵活步骤管理:支持任意步骤的插入、删除、跳转
- 状态保持:支持暂停/恢复、步骤状态还原
- 组件化设计:引导步骤脚本与逻辑分离,支持组件式挂载
- 异步加载:支持步骤资源预加载,优化用户体验
- 事件驱动:完善的生命周期事件系统
- 场景支持:自动处理场景切换与资源加载
新手引导步骤#
负责用户的每个步骤的逻辑处理
多边形遮罩#
用于引导指定的点击位置
- 自动适配:遮罩孔洞在不同屏幕尺寸下都会在正确的位置
- 节点跟踪:遮罩孔洞可跟随引导节点移动
- 屏蔽触摸:可屏蔽遮罩孔洞外的触摸
概念(必读)#
如何减少重复代码及实现任意步骤的跳转?#
在引导过程中,经常需要写一些重复的代码,以及可能面对策划提出的重新登录后跳转到上次未完成的步骤,如何实现它?
框架提供了一个实现方式,使用操作表,示例如下
XXXGuideOperate.ts
import * as cc from 'cc';
const tab: Record<string, mk.GuideManage_.OperateCell> = {
清理界面: {
load() { ... },
unload() { ... },
reset() { ... },
},
引导窗口: { ... },
...
};
const key: {
[k in keyof typeof tab]: k;
} = new Proxy(Object.create(null), {
get: (target, key) => key,
});
export default {
tab,
key,
};
其中的 tab 对象存放操作单元,每个操作单元有 load
, unload
, reset
三个回调函数
-
load
从上个步骤跳转到当前步骤时,若上个步骤不存在当前操作时,则执行 load
-
unload
从当前步骤跳转到下个步骤时,若下个步骤不存在当前操作时,则执行 unload
-
reset
从上个步骤跳转到当前步骤时,若上下步骤都存在当前操作时,则执行 reset
举例#
需求:存在步骤 1 和步骤 2,两个步骤都弹出一个引导窗口,并且可以从任意步骤跳转到这两个步骤
实现:只需要在两个步骤脚本中设置引导操作列表为 [清理界面, 引导窗口]
,从任意步骤跳转时,引导管理器都会依次顺序执行