Unity编辑器扩展——预制体修改检测工具

在我们的项目进行中,通常会有许多修改预制体的人员,为了确保他们对预制体修改的合法性,我们可以使用下面这个工具来做一些合法性的校验,给修改人员相应的提示,防止它们的误修改操作。

主要涉及到的Unity的方法有PrefabStage的prefabStageClosing回调监听,在退出预制体修改时触发。

namespace PrefabUtilityTool
{
    public static class CheckPrefabValidTool
    {
        [InitializeOnLoadMethod]
        private static void Load()
        {
            PrefabStage.prefabStageClosing -= OnPrefabClosed;
            PrefabStage.prefabStageClosing += OnPrefabClosed;
        }

        //仅在关闭时做一次检测
        private static void OnPrefabClosed(PrefabStage obj)
        {
            OnPrefabInstanceSaved(obj.prefabContentsRoot);
            //Debug.Log($"OnPrefabClosed  {obj.prefabContentsRoot}");
        }

        //检测它保存的合法性
        private static void OnPrefabInstanceSaved(GameObject obj)
        {
            if (!CheckValidPrefab(obj))
            {
                EditorUtility.DisplayDialog("错误!", $"{obj.name}检测到不合法预制体修改!", "好的");
            }
        }

        //检测合法性的函数,在这里可以做一些合法性的具体校验
        private static bool CheckValidPrefab(GameObject obj)
        {
            return true;
        }
    }
}

Guess you like

Origin blog.csdn.net/dmk17771552304/article/details/120420293