반응형
이전 방식 - 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 |
댓글