本文主要介绍根据一款Node Editor库开发的新手引导系统
git地址如下:
https://github.com/luis-l/UnityNodeEditorBase
一、旧版新手引导做法
GuideCheckManager负责check各种类型的引导,判断是否达到触发条件,如果达到条件,当前无引导,则直接进行引导,否则存入缓存队列中。
GuideCheckManager注册跟引导有关的消息通知,等收到通知,做一些check工作。
一个大步引导包含多个单线的单步引导,每个单步引导又可有check条件,如果中间某一单步引导未check通过,则打断引导。
缺点:
(1)配置采用CSV,可读性极差
使用CSV作为配置,为了将触发条件也配置化,就必须做一些数据解析的工作,如下图所示:
然后在程序中定义各种类型trigger的数据解析函数。从CSV中无法很直观的知道这一单步引导具体是引导什么。
填充数据也较为繁琐。
二、基于结点编辑的配置化新手引导系统
(1)基于ScriptableObject、结点编辑的配置
工具截图如下:
GuideNodeGraph:一个结点树称为一个大步引导
GuideNode:一个结点称为一个单步引导
一个GuideNodeGraph就是一个ScriptableObject文件
一个GuideNodeGraph包含多个Node,连接NextStepGuide-> LastStepGuide,形成结点树。
每个GuideNode,包含一个Input(LastStepGuide,目前无实际作用,只是为了连接结点树,OutPut必与Input连接),三个Output(NextStepGuide、Trigger、Condition)
NextStepGuide:用来存储下一个单步引导结点,如果无下一单步引导结点,则当前引导结点完成时,引导结束。
Trigger:该单步引导结点触发条件,如果有多个Trigger,则只要有一个Trigger Success,则该引导则触发。
Condition:引导条件结点。单步引导结点可包含多个Condition引导条件,只有当多个Condition均成立时,才会引导。
Trigger和Condition均为Node 的子类。
库中ActionTriggerSystem类的setupNodeCreateMenu函数,实现了在NodeEditor中的右键菜单,自行修改可以实现排序,某一类node在前,某一类在后
根据Guide View界面类型的不同,可以定义多种Guide Node保存数据,一般有对话模式的,以及点击UI模式的,本文主要讲如何使用Node Editor、ScriptableObject进行配置化,如果项目中不是使用ScriptableObject进行配置存储的话,该方案就不适用了。
可以NodeEditor的优点:
配置引导可读性高,并且不存在配置数据解析逻辑,更改引导内顺序也很方便快捷。
最后感谢作者提供的Node Editor库
git地址如下:
https://github.com/luis-l/UnityNodeEditorBase
以上知识分享,如有错误,欢迎指出,共同学习,共同进步。