Unity编辑器拓展之二十四:基于Unity Node Editor、ScriptableObject的配置化新手引导系统
博客迁移
个人博客站点,欢迎访问,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的配置化新手引导系统相关推荐
- 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web渗透的第一步工作,涉及网站信息.域名信息.端口信息.敏感信息及指纹 ...
- Android开发笔记(二十四)res目录的结构与配置
res目录结构 res是Android项目工程中存放各类的目录,主要包括布局.图形与配置等等.res的子目录主要有: anim : 存放动画的描述文件 drawable : 存放各类图形的描述文件,包 ...
- (二十四)树莓派3B+ Node.js驱动MPU6050
在之前的博客中写过MPU6050模块. (十四)树莓派3B+ wiringPi库的使用–硬件IIC驱动MPU6050 之前使用的wiringPi和C语言写的,现在使用Node.js操作一下.关于电路连 ...
- [网络安全自学篇] 二十四.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例
这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web渗透的第一步工作,涉及网站信息.域名信息.端口信息.敏感信息及指纹 ...
- Unity SKFramework框架(二十四)、Avatar Controller 第三人称控制
目录 一.简介 二.使用说明 1.人物控制 2.相机控制 三.参数说明 1.Avatar Controller 2.Camera Controller 一.简介 Avatar Controller适用 ...
- Unity编辑器拓展之六:利用反射打开Unity Preferences Window
博客迁移 个人博客站点,欢迎访问,www.jiingfengji.tech 如何利用反射打开Unity Preferences Window Unity Preferences Window如下图所示 ...
- 二十四、创建Node项目,深入Nodejs
@Author:Runsen @Date:2019/12/05 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘课严重,专业 ...
- J2EE进阶(二十四)JBoss Web和 Tomcat的区别
J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...
- SAP UI5 应用开发教程之六十四 - 基于 OData V4 的 SAP UI5 表格控件如何实现 filter(过滤) 和 sort(排序)功能试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
最新文章
- 关于JavaScript为何要限制跨域访问
- BCP导出导入大容量数据实践
- ORM框架之Mybatis(一)基于mapper配置增删改查
- 太强了!这款轻量级中间件几行代码就搞定SpringBoot的分库分表问题
- ES6的新特性(9)——对象的扩展
- mysql为什么尽量少星号,mysql – select中是否存在星号排除其他列?
- oracle hcm cloud价格,Oracle HCM
- 破解使用radius实现802.1x认证的企业无线网络
- 统计局:2018年全国规模以上工业企业利润增长10.3%
- 微信公众平台开发【素材管理】上传临时素材
- cocos2d-x : csb的加载
- 我用AI生成了这些明星一生的样貌变化 | 已填坑附源码
- 探花交友_第2章-完善个人信息与MongoDB入门
- php平均值函数怎么用,表格平均值公式的使用方法
- 事业单位计算机技术岗工资,事业单位管理岗和技术岗工资区别,不得不知!
- Jmeter断言-响应断言
- elementUi中的el-select/el-input去掉border边框
- 浅谈操作系统OS与计算机软硬件体系结构,自顶贯穿性与行为回归硬件性
- 2017 12 05
- 使用水库模型分析丰田生产方式
热门文章
- 广州楼市:400W,高升值潜力的热门板块!
- 当兵的目标和计划_新兵下连时,一定要弄明白这三件事,对新兵及家长来说很有必要...
- 如何将tomcat注册成windows系统服务方法
- 2021年企业服务行业BP和融资计划书PPT模板
- 幸福,是一种有节制的满足,冷暖自知。
- iptables目标TTL
- 我给鸿星尔克写了一个720°看鞋展厅
- 使用CoreLocation定位
- Time Has Never Been Better for a Gay NFL Player to Come Out
- java 垃圾回收题目_Java垃圾收集题目分析