본문 바로가기
dev

[Unity] Project Initialization

by #### 2022. 8. 28.
반응형

이전 방식 - InitializeOnLoad를 사용한 사전로드 방식입니다.

 

using UnityEngine;

[InitializeOnLoad]
public static class Preloader {
	static Preloader() => EditorApplication.playModeStateChanged += Preload;
    
    public static void Preload(PlayModeStateChange state) {
        var index = SceneManager.GetActiveScene().buildIndex;
        if (state == PlayModeStateChange.ExitingEditMode) {
        	EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
        }
        
        if (state == PlayModeStateChange.EnteredPlayMode) {
        	SceneManager.LoadScene(0);
            SceneManager.LoadScene(index);
        }
    }
}

 

 

새로운 방식 - RuntimeInitializeOnLoadMethod 속성을 사용하여 필요한 자산을 쉽게 초기화하면 경쟁 조건과 종속성 지옥을 방지할 수 있습니다.

 

  • Resources 폴더에서 로드
using UnityEngine;

public static class Bootstrapper {
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    public static void Execute() {
        Object.DontDestroyOnLoad(Object.Instantiate(Resources.Load("Systems")));
    }
}

 

  • Addressables에서 로드
using UnityEngine;

public static class Bootstrapper {
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    public static void Execute() {
        Object.DontDestroyOnLoad(Addressables.InstantiateAsync("Systems").WaitForCompletion());
    }
}
반응형

'dev' 카테고리의 다른 글

[Unity] GuardLayerImage  (0) 2022.08.29
[Unity] Zenject Tutorial  (0) 2022.08.29
[Unity] C# Coding Standards  (0) 2022.08.28
[Unity] UIEffect  (0) 2022.08.27
[Unity] UI Extensions  (0) 2022.08.27

댓글