Unity/UnityEditor
[Unity/UnityEditor] EditorApplication, EditorSceneManager
sorry0101
2023. 5. 17. 12:00
EditorApplication.playModeStateChanged : Play Mode 이벤트
EditorSceneManager.activeSceneChangedInEditMode : Scene 변경 이벤트
InitalizeOnLoad : 클래스 어트리뷰트, 컴파일 또는 플레이 모드에 실행
InitalizeOnLoadMethod: 메소드 어트리뷰트, 컴파일 또는 플레이 모드에 실행
using UnityEngine;
using UnityEditor;
using UnityEngine.SceneManagement;
using UnityEditor.SceneManagement;
[InitializeOnLoad]
public class ReloadManager
{
static ReloadManager()
{
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
EditorSceneManager.activeSceneChangedInEditMode += OnActiveSceneChangedInEditMode;
EditorSceneManager.sceneSaved += OnSceneSaved;
}
// Scene Open
private static void OnActiveSceneChangedInEditMode(Scene currentScene, Scene nextScene)
{
Debug.Log("OnActiveSceneChangedInEditMode");
}
private static void OnPlayModeStateChanged(PlayModeStateChange state)
{
switch (state)
{
// 플레이모드 진입
case PlayModeStateChange.EnteredPlayMode:
Debug.Log("EnteredPlayMode");
break;
// 플레이모드 종료
case PlayModeStateChange.ExitingPlayMode:
Debug.Log("ExitingPlayMode");
break;
// 에디터모드 진입
case PlayModeStateChange.EnteredEditMode:
Debug.Log("EnteredEditMode");
break;
}
}
// Project Load
[InitializeOnLoadMethod]
static void OnProjectLoadedInEditor()
{
Debug.Log("Project loaded in Unity Editor");
}
// 수정사항이 있는 씬 저장 시 호출
private static void OnSceneSaved(Scene scene)
{
Debug.Log("OnSceneSaved");
}
}
참고