Enter Play Mode 옵션을 켰을 때 static 초기화 처리
문서: https://docs.unity3d.com/kr/2021.1/Manual/ConfigurableEnterPlayMode.html
플레이 모드 진입이 빨라지는 이유
섹션 제목: “플레이 모드 진입이 빨라지는 이유”- 도메인 리로드 안 함: 스크립트 초기화(static 필드 초기화, 등록된 핸들러 제거)를 하지 않는다.
- 씬 리로드 안 함: 디스크에서 씬을 메모리로 다시 읽지 않고 수정된 콘텐츠만 초기화한다.
모바일 슬롯 게임에 적용한 방법
섹션 제목: “모바일 슬롯 게임에 적용한 방법”도메인 리로드를 건너뛰므로 static 상태가 이전 플레이의 값으로 남는다. 도메인이나 씬 로드 때 초기화되던 static 필드는 RuntimeInitializeOnLoadMethod 어트리뷰트로 직접 초기화한다.
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] static void InitStatic() { isAssetBundleInitialized = false; FirebaseWrapper.Init.Done = false; }또한 싱글톤 MonoBehaviour는 인스턴스가 만들어지기 전에 참조되므로 Mono 생명주기 메서드로 초기화할 수 없다. 이런 경우 시작 지점(intro 씬의 Startup)에서 static 멤버 변수를 직접 초기화한다.
#if UNITY_EDITOR || UNITY_DEBUG AppLogger.LogLevel = AppLogger.Level.DEBUG; //AppLogger.OnWrite += OnLoggerWrite; NetClient.appIsQuitting = false; NetClient.Instance.Config.Log.Level = NetLogger.Level.DEBUG;#else AppLogger.LogLevel = AppLogger.Level.NEVER; NetClient.appIsQuitting = false; NetClient.Instance.Config.Log.Level = NetLogger.Level.NEVER;#endif