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");
}
}
참고
'Unity > UnityEditor' 카테고리의 다른 글
[Unity/UnityEditor] Undo Redo MissingReference (0) | 2023.07.28 |
---|---|
[Unity/UnityEditor] 용어 정리 (0) | 2023.05.23 |
[Unity/UnityEditor] UnityEditor.Selection (0) | 2023.05.10 |
[Unity/UnityEditor] EditorApplication.isPlaying (0) | 2023.05.10 |
[Unity/UnityEditor] DestroyImmediate 에디터 모드 시 오브젝트 제거 (0) | 2023.05.10 |