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;
}
}