Unity开发笔记-Editor扩展用GraphView实现逻辑表达式(0)简介
节点系统简介#
基于Graph的节点编辑器是非常强大的,而且Graph(图)是重要的数据结构之一,很多实际的问题的算法和解决方案都需要用图和其中的节点(Node)来实现。
举几个例子:Unity中我们所知的ShaderGraph,AssetGraph都是基于Graph的节点编辑器,而Bolt也为我们提供了可视化编程解决方案类似于UE中的蓝图。
游戏业务逻辑中的行为树,带有分支的对话系统,技能编辑器,都可以用Graphview实现。作为逻辑程序员,这些是我们最有可能利用Graphview自己动手实现的功能。
另外状态机也可以使用节点系统进行可视化,状态机中的某个状态可以看作是一个节点,完全可以使用GraphView实现另一个PlayMaker。
GraphView为我们提供了什么#
GraphView为我们提供了一整套节点系统的UI解决方案,它本身是由UIElement实现的。Graph,Node,Port,Edge,这些复杂的UI和交互已经为我们实现了,我们可以通过扩展Node实现我们自己的节点编辑功能
GraphView没有提供什么#
不幸的是,除了UI以外,GraphView并没有提供其他功能比如:
1.编辑后的数据序列化,我们需要自己实现编辑器可视化数据的保存功能
2.运行时的Graph行为。GraphView中的node和node之间的关系,运行起来到底代表什么,能做什么,需要我们自己实现。举个例子:剧情对话功能是我们想要实现的运行时功能,而Graphview对此一无所知。
避免重复造轮子,其他现成的节点方案,xNode和bolt#
知道了这些,我们可以想象到,从0实现一个节点系统还是有不少的工作量。
如果想要更完整的方案,可以先参考下开源的xNode,他实现了GraphView几乎相同的UI功能,使用传统GUI,所以向下兼容到Unity5,而GraphView至少需要2019。
同时xNode提供了数据序列化功能,和运行时的Graph基类。
如果还不满足,想要更多集成的功能,可以看看bolt。bolt相当于UE中的蓝图。我对bolt还没有太多研究,感兴趣的各位可以查看其他资料。
下面我们正式来实现一个Graphview的表达式功能系统。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)