02 位置工具优化

This commit is contained in:
2025-05-08 15:57:40 +08:00
parent 5782abb549
commit 5e41d558ca
9 changed files with 52 additions and 247 deletions

View File

@@ -1,6 +1,8 @@
using System;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Stary.Evo.InformationSave
{
@@ -9,16 +11,33 @@ namespace Stary.Evo.InformationSave
{
private CustomEditorBase _customEditorBase;
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
serializedObject.Update();
_customEditorBase = target as CustomEditorBase;
if (string.IsNullOrEmpty(_customEditorBase.mationID))
{
_customEditorBase.mationID = _customEditorBase.gameObject.GetInstanceID().ToString();
}
GUILayout.BeginHorizontal();
GUILayout.Box("MationID:", GUILayout.MaxWidth(500));
GUILayout.Box(_customEditorBase.mationID, GUILayout.MaxWidth(500));
GUILayout.EndHorizontal();
_customEditorBase.Draw();
//这个函数告诉引擎相关对象所属于的Prefab已经发生了更改。方便当我们更改了自定义对象的属性的时候自动更新到所属的Prefab中
if (GUI.changed && EditorApplication.isPlaying == false)
{
serializedObject.ApplyModifiedProperties();
var prefabType = PrefabUtility.GetPrefabInstanceStatus(_customEditorBase);
if (prefabType != PrefabInstanceStatus.NotAPrefab)
{
PrefabUtility.RecordPrefabInstancePropertyModifications(_customEditorBase);
}
EditorUtility.SetDirty(_customEditorBase);
EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
}