Unity - 씬 로드와 정적 변수

출처 : https://answers.unity.com/questions/1169580/static-variable-reset-at-loadlevel.html

정적 변수들은 기본적으로 UnityEngine.Object 으로부터 상속받는다. UnityEngine.Object는 씬에 포함되어 있으니 managed unity type 이라고 볼 수 있겠다. 이러한 특성상의 이유로 정적 변수들은 씬이 파괴될때 리셋된다. (새로운 씬이 로드될 때 현재 씬이 파괴되므로 보통 이 시기에 같이 소멸된다.)

Yes, static variables are outside of the scene, but not GameObjects and Components, they belong to the scene and are destroyed when you load a new scene. So your static variable still exists but the object it references doesn't.

정확히 정적 변수들은 프로그램이 실행되는 내내 존재하므로, 정적 변수자체는 씬의 외부에 존재한다고 볼 수 있다. 하지만 정적 변수들을 포함하는 오브젝트나 컴포넌트는 씬에게 참조된 상태이기 때문에 씬 전환시에 내부 오브젝트들은 전부 파괴되지만 정적 변수들은 남아있게 된다.

 - DontDestoryOnLoad 로 선언된 게임오브젝트나 컴포넌트들은 조금 다른데 씬이 전환되더라도 소멸되지 않고 남아있는다.

* 이 부분은 유니티의 백엔드를 담당하는 c++과 연관이 있는 것 같은데 자세히는 모르겠다.

댓글

이 블로그의 인기 게시물

Unity - Dialogue 시스템을 구현할 때 유용한 무료 에셋

Unity - 메타 파일

Unity - 라이브러리 폴더