끄적

재귀 방식

sorry0101 2023. 5. 17. 12:03
using UnityEngine;
using UnityEditor;
using UnityEngine.SceneManagement;
using UnityEditor.SceneManagement;

[InitializeOnLoad]
public class ReloadManager
{
    static ReloadManager()
    {
        EditorSceneManager.activeSceneChangedInEditMode += OnActiveSceneChangedInEditMode;
    }

    private static void OnActiveSceneChangedInEditMode(Scene currentScene, Scene nextScene)
    {
        GameObject[] rootObjects = nextScene.GetRootGameObjects();

        foreach (GameObject rootObject in rootObjects)
        {
            GameObject foundObject_desired = FindObjectInHierarchy(rootObject, desiredObjectName);
            if (rootObject.name == desiredObjectName)
            {
                Debug.Log("OnActiveSceneChangedInEditMode");
                foundObject_desired.GetComponent<TestManager>().ReloadAsset_Editor();
                return;
            }
        }
    }

    // 오브젝트 하위까지 찾기
    private static GameObject FindObjectInHierarchy(GameObject rootObject, string objectName)
    {
        if (rootObject.name == objectName)
            return rootObject;

        foreach (Transform child in rootObject.transform)
        {
            GameObject foundObject = FindObjectInHierarchy(child.gameObject, objectName);
            if (foundObject != null)
                return foundObject;
        }

        return null;
    }
}

'끄적' 카테고리의 다른 글

너무 기본이지만 한번 더 기억  (0) 2022.12.07