因为尝试过很多节点型编辑器,比如Behavior Designer、ASE,或者官方的Shader Graph,那么我就想能不能自己也做一个节点型编辑器,因为个人能力有限,所以我想找找有没有现有的节点编辑器框架可供学习,我上Github招了一下,发现其实有不少框架,而这其中xNode是最吸引我的,那么就来学习一下xNode来定制自己的节点编辑器吧
本文中的项目来源于 https://github.com/Siccity/xNode
1 创建界面和节点
在节点编辑器中最重要的就是界面(Graph)和节点(Node),那么首先来让我们看一下Graph
1.1 创建Graph
通过Assets——Create——NodeGraph C# Script我们就能快速创建Graph的代码,代码也十分简洁
这里要注意:
- 如果需要当前Graph中的数据可以被序列化,我们需要添加[System.Serializable]特性,也可以通过修改"xNode_NodeGraphTemplate.cs.txt"来统一修改
- 通过修改CreateAssetMenu特性中的参数可以改变创建Asset的窗口选项和名称
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using XNode;
[CreateAssetMenu]
//CreateAssetMenu(fileName = "String Graph", menuName = "xNode Examples/String Graph")
public class NewNodeGraph : NodeGraph {
}
1.2 NodeGraph解析
接下来就对代码作简单的解析
///这是所有NodeGraph的基类
[Serializable]
public abstract class NodeGraph : ScriptableObject
{
///目前Graph中所有的Node
[SerializeField] public List<Node> nodes = new List<Node>();
///通过模板为当前Graph添加Node,本质上还是使用了下面的Type来添加
public T AddNode<T>() where T