博客迁移

个人博客站点,欢迎访问,www.jiingfengji.tech

本文主要介绍根据一款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

以上知识分享,如有错误,欢迎指出,共同学习,共同进步。

Unity编辑器拓展之二十四:基于Unity Node Editor、ScriptableObject的配置化新手引导系统相关推荐

  1. 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web渗透的第一步工作,涉及网站信息.域名信息.端口信息.敏感信息及指纹 ...

  2. Android开发笔记(二十四)res目录的结构与配置

    res目录结构 res是Android项目工程中存放各类的目录,主要包括布局.图形与配置等等.res的子目录主要有: anim : 存放动画的描述文件 drawable : 存放各类图形的描述文件,包 ...

  3. (二十四)树莓派3B+ Node.js驱动MPU6050

    在之前的博客中写过MPU6050模块. (十四)树莓派3B+ wiringPi库的使用–硬件IIC驱动MPU6050 之前使用的wiringPi和C语言写的,现在使用Node.js操作一下.关于电路连 ...

  4. [网络安全自学篇] 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web渗透的第一步工作,涉及网站信息.域名信息.端口信息.敏感信息及指纹 ...

  5. Unity SKFramework框架(二十四)、Avatar Controller 第三人称控制

    目录 一.简介 二.使用说明 1.人物控制 2.相机控制 三.参数说明 1.Avatar Controller 2.Camera Controller 一.简介 Avatar Controller适用 ...

  6. Unity编辑器拓展之六:利用反射打开Unity Preferences Window

    博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 如何利用反射打开Unity Preferences Window Unity Preferences Window如下图所示 ...

  7. 二十四、创建Node项目,深入Nodejs

    @Author:Runsen @Date:2019/12/05 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业 ...

  8. J2EE进阶(二十四)JBoss Web和 Tomcat的区别

    J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...

  9. SAP UI5 应用开发教程之六十四 - 基于 OData V4 的 SAP UI5 表格控件如何实现 filter(过滤) 和 sort(排序)功能试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

最新文章

  1. 关于JavaScript为何要限制跨域访问
  2. BCP导出导入大容量数据实践
  3. ORM框架之Mybatis(一)基于mapper配置增删改查
  4. 太强了!这款轻量级中间件几行代码就搞定SpringBoot的分库分表问题
  5. ES6的新特性(9)——对象的扩展
  6. mysql为什么尽量少星号,mysql – select中是否存在星号排除其他列?
  7. oracle hcm cloud价格,Oracle HCM
  8. 破解使用radius实现802.1x认证的企业无线网络
  9. 统计局:2018年全国规模以上工业企业利润增长10.3%
  10. 微信公众平台开发【素材管理】上传临时素材
  11. cocos2d-x : csb的加载
  12. 我用AI生成了这些明星一生的样貌变化 | 已填坑附源码
  13. 探花交友_第2章-完善个人信息与MongoDB入门
  14. php平均值函数怎么用,表格平均值公式的使用方法
  15. 事业单位计算机技术岗工资,事业单位管理岗和技术岗工资区别,不得不知!
  16. Jmeter断言-响应断言
  17. elementUi中的el-select/el-input去掉border边框
  18. 浅谈操作系统OS与计算机软硬件体系结构,自顶贯穿性与行为回归硬件性
  19. 2017 12 05
  20. 使用水库模型分析丰田生产方式

热门文章

  1. 广州楼市:400W,高升值潜力的热门板块!
  2. 当兵的目标和计划_新兵下连时,一定要弄明白这三件事,对新兵及家长来说很有必要...
  3. 如何将tomcat注册成windows系统服务方法
  4. 2021年企业服务行业BP和融资计划书PPT模板
  5. 幸福,是一种有节制的满足,冷暖自知。
  6. iptables目标TTL
  7. 我给鸿星尔克写了一个720°看鞋展厅
  8. 使用CoreLocation定位
  9. Time Has Never Been Better for a Gay NFL Player to Come Out
  10. java 垃圾回收题目_Java垃圾收集题目分析