유니티 엔진 (Unity Engine)

[Unity] Play Mode 시작 시 씬 고정하기

원소랑 2022. 1. 30. 21:52

Unity Editor로 특정 씬을 작업하다가 플레이 모드를 시작할 때, 특정 씬부터 실행되도록 고정하고 싶을 때가 있습니다. 이럴 때 아래 스크립트 코드를 활용해서 시작 씬을 고정할 수 있습니다.

#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.SceneManagement;

[InitializeOnLoadAttribute]
public static class DefaultSceneLoader
{
    static DefaultSceneLoader(){
        EditorApplication.playModeStateChanged += LoadDefaultScene;
    }

    static void LoadDefaultScene(PlayModeStateChange state){
        if (state == PlayModeStateChange.ExitingEditMode) {
            EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo ();
        }

        if (state == PlayModeStateChange.EnteredPlayMode) {
            EditorSceneManager.LoadScene (0);
        }
    }
}
#endif

중요한 요소는 DefaultSceneLoader 클래스 선언 상단의 어트리뷰트.

해당 어트리뷰트로 선언한 static class 는 컴파일이 되거나 처음 로드됐을 때, Play Mode 에 들어갈 때 생성자가 호출됩니다. 해당 클래스의 LoadDefaultScene 콜백 함수를 통해 특정 씬으로 이동하도록 제어할 수 있습니다.

PlayModeStateChange 열거자(enum)를 참조하여, EnteredPlayMode 일 때 0번 Index 씬을 로드하도록 하면, Play Mode가 시작될 때 첫 번째 씬이 로드되도록 할 수 있습니다. 이 때 빌드 셋팅(Build Setting) 에서 씬 순서를 먼저 설정 해 두어야 한다는 점도 유의해야 합니다.

728x90
반응형