我有一个预置,包含一个自定义编辑器脚本。然后在场景中修改预置,包括脚本本身。
但是,在预置之外修改的变量看起来就像其他变量一样。
Undo.RecordObject
和
EditorUtility.SetDirty
但运气不好。
我已经搜索和测试脚本几个小时没有运气,如果有人能告诉我我做错了什么就太好了。
编辑器脚本如下所示:
using UnityEditor;
using UnityEngine;
using UnityEditor.SceneManagement;
using UnityEngine.SceneManagement;
[CustomEditor (typeof (MyScript))]
[CanEditMultipleObjects]
public class MyScriptEditor : Editor {
SerializedProperty usePanel, [...], equalHints;
protected virtual void OnEnable () {
setvars ();
}
void setvars () {
usePanel = serializedObject.FindProperty ("usePanel");
// ...and more variables...
equalHints = serializedObject.FindProperty ("equalHints");
MyScript s = (MyScript) target;
Undo.RecordObject (s, "test");
}
public override void OnInspectorGUI () {
if (usePanel.Equals (null)) setvars ();
MyScript s = (MyScript) target;
if (GUI.changed) {
EditorUtility.SetDirty (s); // <--- this was one of my attempts
EditorSceneManager.MarkSceneDirty (SceneManager.GetActiveScene ());
}
usePanel.boolValue = EditorGUILayout.Toggle ("Use Panel", usePanel.boolValue);
// some more lines of code here
if (equalHints.boolValue) {
// do some stuff
}
this.serializedObject.ApplyModifiedProperties ();
}
}