• 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的表达式功能系统。

  • 相关阅读:
    Oracle 集合类型
    JAVA_SE_笔记整理(反射机制)
    JAVA_SE_笔记整理(GUI)
    JAVA_SE_笔记整理(网络编程)
    JAVA_SE_笔记整理(多线程)
    JAVA_SE_笔记整理(流)
    JAVA_SE_笔记整理(集合三)
    JAVA_SE_笔记整理(集合二)
    JAVA_SE_笔记整理(集合一)
    JAVA_SE_笔记整理(面向对象四(接口,包,内部类))
  • 原文地址:https://www.cnblogs.com/terrynoya/p/14087453.html
Copyright © 2020-2023  润新知