Unity/Tip

GameObject의 Missing Script 삭제 자동화

코샵 2023. 5. 17. 15:27
반응형

다음은 누락된 스크립트를 자동으로 제거하는 코드입니다. 이 코드를 사용하면 선택한 게임 오브젝트에서 누락된 스크립트를 모두 제거할 수 있습니다.

using UnityEditor;
using UnityEngine;

public class SelectGameObjectsWithMissingScripts : Editor
{
    [MenuItem("Utility/Remove Missing Script")]
    private static void RemoveAllMissingScriptComponents()
    {
        var selectedGameObjects = Selection.gameObjects;
        int totalComponentCount = 0;
        int totalGameObjectCount = 0;

        foreach (var gameObject in selectedGameObjects)
        {
            int missingScriptCount = GameObjectUtility.GetMonoBehavioursWithMissingScriptCount(gameObject);

            if (missingScriptCount > 0)
            {
                Undo.RegisterCompleteObjectUndo(gameObject, "Remove Missing Scripts");
                GameObjectUtility.RemoveMonoBehavioursWithMissingScript(gameObject);

                totalComponentCount += missingScriptCount;
                totalGameObjectCount++;
            }
        }

        Debug.Log($"Removed {totalComponentCount} missing script component(s) from {totalGameObjectCount} game object(s).");
    }
}

이 코드는 에디터에서 실행되는 코드이며, 에디터의 메뉴에서 "Utility/Remove Missing Script"를 선택하여 실행할 수 있습니다. 인스펙터 창에서 Missing Script를 제거할 대상의 게임 오브젝트를 선택하고 실행하시면 됩니다.