Node Editor Framework高级功能:节点分组、缩放平移、撤销重做全解析
Node Editor Framework是一款专为Unity打造的灵活且模块化的节点编辑框架,能帮助开发者轻松创建基于节点的显示和编辑器。本文将深入解析其三大高级功能:节点分组、缩放平移和撤销重做,让你快速掌握提升工作效率的实用技巧。
一、节点分组:让复杂流程图井然有序 📦
节点分组功能允许你将相关节点归类管理,特别适合处理包含大量节点的复杂流程图。通过创建逻辑分组,不仅能让界面更整洁,还能提高团队协作效率。
1.1 创建与管理节点组
在Node Editor Framework中,创建节点组非常简单。你可以通过代码直接实例化NodeGroup类:
new NodeGroup("功能模块A", NodeEditor.ScreenToCanvasSpace(inputInfo.inputPos));
每个节点组都有独立的标题和位置,存储在NodeCanvas的groups列表中:
public List<NodeGroup> groups = new List<NodeGroup> ();
1.2 节点组的高级操作
节点组支持多种交互操作:
- 调整大小:通过拖拽边框可自由调整节点组大小
- 重命名:双击标题区域可修改组名称
- 嵌套分组:支持创建子节点组,实现层级化管理
相关实现代码位于 Node_Editor_Framework/Runtime/Framework/Core/NodeGroup.cs,该类提供了完整的节点组管理功能,包括创建、删除、更新和绘制等操作。
二、缩放平移:掌控全局与细节 🔍
缩放平移功能让你能够自由浏览节点画布,无论是查看整体流程图还是聚焦特定细节,都能轻松实现。
2.1 画布平移操作
平移功能通过鼠标拖拽实现,相关逻辑在HandleWindowPanning系列方法中:
private static void HandleWindowPanningStart(NodeEditorInputInfo inputInfo)
private static void HandleWindowPanning(NodeEditorInputInfo inputInfo)
private static void HandleWindowPanningEnd(NodeEditorInputInfo inputInfo)
平移偏移量存储在NodeEditorState的panOffset属性中,在保存和加载时会被序列化:
public Vector2 panOffset; // 画布平移偏移量
2.2 缩放控制
缩放功能通过鼠标滚轮实现,相关代码在HandleZooming方法中。缩放比例和位置信息同样保存在NodeEditorState中:
public float zoom; // 缩放比例
public Vector2 zoomPos; // 缩放中心位置
缩放和平移的组合应用让你能够轻松浏览大型节点画布,相关实现位于 Node_Editor_Framework/Runtime/Framework/Interface/NodeEditorInputControls.cs。
三、撤销重做:安全探索创意 ✨
撤销重做功能是任何编辑器的必备特性,Node Editor Framework提供了完善的操作历史记录系统,让你可以放心大胆地尝试各种节点布局和连接方式。
3.1 操作记录与恢复
框架使用UndoProManager来记录和管理操作历史:
UndoPro.UndoProManager.RecordOperation(
() => NodeEditorUndoActions.CreateConnection(port1, port2),
() => NodeEditorUndoActions.DeleteConnection(port1, port2),
);
3.2 支持撤销的操作类型
框架支持对多种操作进行撤销/重做:
- 节点创建与删除
- 节点位置调整
- 连接创建与删除
- 节点组操作
撤销重做的核心实现位于 Node_Editor_Framework/Runtime/Framework/Interface/NodeEditorUndoActions.cs,该类提供了各种操作的撤销/重做方法。
四、如何开始使用这些高级功能
要在你的项目中使用Node Editor Framework的这些高级功能,首先需要克隆仓库:
git clone https://gitcode.com/gh_mirrors/no/Node_Editor_Framework
然后参考示例场景和代码,特别是:
这些示例展示了如何集成和使用节点分组、缩放平移和撤销重做等高级功能。
通过掌握这些高级功能,你将能够更高效地创建和管理复杂的节点系统,提升工作流效率,释放创意潜能。Node Editor Framework的模块化设计也使得扩展这些功能变得简单,你可以根据项目需求定制更高级的节点编辑体验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



