入门使用主要知道的4个类
- NodeGraph
- Node
- NodeEditorWindow
- NodePort
NodeGraph 整张节点图表
NodeGraph他继承的是ScriptableObject类用于储存整个图表的数据
主要函数就是
AddNode 增加新的Node节点
CopyNode 复制节点这个在图表里面的复制粘贴就是调用这个创建的
RemoveNode 删除新的Node节点
Clear 清除所有的节点Node
-
使用
[Serializable, CreateAssetMenu(fileName = "KG", menuName = "xNode New/KG Graph")]
public class ItemGraph : NodeGraph {
public override Node AddNode(Type type)
{
return base.AddNode(type);
}
}
Node 节点数据
- 节点的数据类主要储存自定义的数据节点和管理自身NodePort连接点 ==(就是连线端口)==
- 需要进行连线的得打上标签[Input] [Output] 打上之后就会在Node节点出现端口
Input 是输入 打上这个连线方式只能是由 output标签的端口连接,同理 output是输出 打上了只能连接Input,都是不能连同类型的当然你自己改了源码除外 <font color="#dd0000">d(´ω`*)</font><br />
然后就能愉快的连线了,连线的数据储存在NodePort类里面Node持有N个NodePort数据
-
主要函数
获取值GetValue(NodePort) 这个就是获取某个端口值得回调函数 默认是空的你可以自己覆写 达到Input获取了output输出的数据
-
这里我简单写了个例子当然要判断NodePort端口进行获取返回值类型的,下图这里没写
添加Input端口 AddDynamicInput和断连RemoveDynamicInput 一般给你代码动态创建端口
有个属性就是Ports 他持有了自身所有的端口数据需要遍历可以遍历这个
Init() 生成Node的回调函数 不过优先级不是很高 只是这个节点出来的下一帧才触发 不是当前帧 做初始化的童鞋自己注意,如果要当前帧貌似源码那里得自己加
UpdatePorts 更新端口数据和显示的
GetPort(端口名字)获取指定某个端口
- NodeEditorWindow 节点窗口
- 这里稍微简单讲一下 下篇深入点
- NodeEditorWindow主要就是负责绘制整个窗口包括节点绘制都是在这里完成的
- 最常用的一个属性就是==NodeEditorWindow.current== 他就是获取当前的窗口,从而可以获取到所有的节点 这个静态属性
- 获取所有的绘制节点 NodeEditorWindow.graph 拿到就可以遍历这个图表所有数据了
-
还有一个就是打开了 NodeEditorWindow.Open(NodeGraph类)
NodePort 两边的连接点
-
就是节点上的端口
他们分为标签[Input] [Output] 之前说过了可以翻一下
-
有几个常用的函数
- GetInputValues() 获取连接该端口的所有数据
- Connect(NodePort port) 端口连线
- GetConnections()获取该端口所有的连接端口