using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; namespace Stary.Evo.InformationSave { [CustomEditor(typeof(CustomEditorBase), true)] public class CustomEditorBaseEditor : UnityEditor.Editor { private CustomEditorBase _customEditorBase; public override void OnInspectorGUI() { base.OnInspectorGUI(); serializedObject.Update(); _customEditorBase = target as CustomEditorBase; _customEditorBase.Draw(); //这个函数告诉引擎,相关对象所属于的Prefab已经发生了更改。方便,当我们更改了自定义对象的属性的时候,自动更新到所属的Prefab中 if (GUI.changed && EditorApplication.isPlaying == false) { serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(_customEditorBase); EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene()); } } } }