요즘 개발할때 유니티의 enter play mode 를 적극 활용해보려고하고 있다.
https://blog.unity.com/kr/technology/enter-play-mode-faster-in-unity-2019-3
이 옵션이 문제가 되는 경우는
도메인이 Reload 되지않기 때문에 static 변수들이 초기화 되지 않는다는 것.
대부분은 문제가 되지않는데, 문제는 singleton 패턴을 사용할 때 인스턴스를 static변수에 저장한다는 것.
위의 링크에 나와있듯, RuntimeIntializeOnLoadMethod 속성을 사용하여
도메인 리로드가 되지않는 상황에도 대응하게 해야된다.
단순하게 생각해보면 아래와 같이 해보면 될 것 같다.
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void OnRuntimeMethodLoad()
{
_instance = null;
}
그런데 몇번의 삽질 끝에 알아낸 사실은
RuntimeInitializeOnLoadMethod 애트리뷰티는 generic class 에서 동작하지 않는다.
제네릭은 런타임에 바인딩이라 호출 시점의 문제인 듯 하다.
보통 싱글톤은 제네릭 상위클래스로 사용하기 때문에
RuntimeInitializeOnLoadMethod는 최종 클래스에서 사용해야한다.
'🌍 Unity > 유니티 프로그래밍' 카테고리의 다른 글
유니티 IAP 인앱 결제 테스트 (0) | 2021.12.03 |
---|---|
unity FrameCounter (0) | 2021.11.13 |
Unity NavMesh RandomPoint (0) | 2020.08.20 |
CSV 파일 쓰기 (0) | 2019.11.19 |
유니티 csv 파일 읽기 ( Unity csv file read ) 수정 19.11.15 (2) | 2019.11.15 |