Unity3D
的 Mecanim
动画系统有一个自定义的 EditorWindow
,允许通过 GUI 定义树(在本例中为混合树) .
看起来像:
它提供了创建节点(状态)和连接它们(转换)的可能性。
现在,我正在开发一些图形和树结构,我想编写一个编辑器扩展,以便我的游戏设计师能够填充这些结构。
我最想重新创建一个 EditorWindow
,就像 Mecanim 动画师(上图)一样。
我的问题是:是否有任何可用组件可用于此类任务?是否有用于绘图和连接框和箭头的内置类?或者我需要自己完全编写 GUI 元素?
最佳答案
我不是要“寻找工具、图书馆或最喜欢的场外资源”。我想知道如何使用 Unity3D
API 或引擎本身提供的一些可用组件来重现 Mecanim
之类的图形编辑器(如果问题不清楚,抱歉)。
这是我的答案:
不,没有可用于绘制那种图形的可用组件,但编写自己的组件非常容易。这是一个使用可拖动 GUI.Window 的简单示例的片段代表节点和Handles.DrawBezier绘制边缘:
public class GraphEditorWindow : EditorWindow
{
Rect windowRect = new Rect (100 + 100, 100, 100, 100);
Rect windowRect2 = new Rect (100, 100, 100, 100);
[MenuItem ("Window/Graph Editor Window")]
static void Init () {
EditorWindow.GetWindow (typeof (GraphEditorWindow));
}
private void OnGUI()
{
Handles.BeginGUI();
Handles.DrawBezier(windowRect.center, windowRect2.center, new Vector2(windowRect.xMax + 50f,windowRect.center.y), new Vector2(windowRect2.xMin - 50f,windowRect2.center.y),Color.red,null,5f);
Handles.EndGUI();
BeginWindows();
windowRect = GUI.Window (0, windowRect, WindowFunction, "Box1");
windowRect2 = GUI.Window (1, windowRect2, WindowFunction, "Box2");
EndWindows();
}
void WindowFunction (int windowID)
{
GUI.DragWindow();
}
}
关于c# - 如何为图形或树结构编写 GUI 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17593101/