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++과 연관이 있는 것 같은데 자세히는 모르겠다.
정적 변수들은 기본적으로 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++과 연관이 있는 것 같은데 자세히는 모르겠다.
댓글
댓글 쓰기