通用节点编辑器03-运行时部分
通用运行时与序列化接口
运行时部分负责加载导出的图数据、创建 RuntimeNode、执行节点生命周期并完成节点跳转。
运行时结构
1 | GraphRuntimeManager |
GraphRuntimeManager
GraphRuntimeManager 是单例入口,负责:
- 持有多个
GraphRunner。 - 从字符串、TextAsset 或 Resources 加载运行时图。
- 统一序列化和反序列化入口。
- 更新、卸载和清理 Runner。
1 | GraphRunner runner = GraphRuntimeManager.Instance |
GraphRunner
GraphRunner 维护当前节点和节点映射,并提供以下执行流程:
1 | Start |
Start() 会启动图并自动执行 Start 节点的一次 Step(),因此业务调用方通常只需要调用 Start()。
RuntimeNode 接口
每个 RuntimeNode 都实现 INodeGraphRuntimeNode:
1 | void Init(GraphRunner runner, NodeGraphRuntimeNodeData data); |
通常业务节点继承 NodeGraphRuntimeNodeBase<TUserData>,只实现实际需要的方法。
运行时节点注册
RuntimeNode 使用 NodeRuntime 特性绑定编辑器节点类型:
1 | [] |
NodeGraphRuntimeFactory 会根据导出数据中的节点类型创建对应的 RuntimeNode。
可替换序列化器
序列化接口分为:
1 | public interface IGraphSerializer |
INodeGraphSerializer 组合上述两个接口。当前实现为 NodeGraphNewtonJsonSerializer,Manager 持有接口类型:
1 | private readonly INodeGraphSerializer serializer = |
项目需要切换 JSON 工具或二进制工具时,实现 INodeGraphSerializer,再替换这一个实例即可。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 穿越时空的思念!
