我已经制作了一个自定义编辑器(扩展了EditorWindow)。该编辑器允许编辑选定的对象。
问题是,在我按下编辑器面板上的按钮后,按 CTRL / CMD + Z 什么都不做,它&#39在历史上没有追踪过。
是否有一些命令可以跟踪从自定义编辑器面板中触发的操作?
答案 0 :(得分:3)
您可以这样做,但由于Unity不会自动跟踪脚本修改的对象,因此您必须通知编辑器要记录的对象。对于所有序列化属性,您可以依赖Unity的撤销系统。
步骤如下:
这是一个简单的例子:
public class TestWindow : EditorWindow {
static Transform anObjTransform;
void OnGUI()
{
anObjTransform = EditorGUILayout.ObjectField ("selected object", anObjTransform, typeof(Transform), true) as Transform;
if (anObjTransform != null && GUILayout.Button("MOVE RIGHT"))
{
Undo.RecordObject(anObjTransform, "move");
anObjTransform.Translate(anObjTransform.right * 10f);
EditorUtility.SetDirty(anObjTransform);
}
}
[MenuItem ("Test/Test Window")]
private static void Init () {
EditorWindow.GetWindow<TestWindow> ();
}
}