[유니티] scriptable object 초기화되는 상황

jh Seo·2024년 9월 1일
0

유니티

목록 보기
46/50

개요

해상도 정보를 씬 넘어가도 유지하도록 scriptable object를 사용 중이였다.
scriptable object는 씬 전환시 데이터가 유지되어서 각 씬끼리나 클래스들이
scriptable object의 데이터로 통신하게끔 만들어진것으로 알고 사용을 했다.

문제는 0번씬에서 1번씬으로 전환을 했을 때는 잘 정보가 유지되다가
1번씬에서 0번씬으로 갈때 scriptable object의 값이 기본값으로 초기화가 계속 됐다,,

아무리 생각해보고 또 해당 SO를 참조하는 클래스를 봐도 두 클래스만 사용중이고
값을 변경하는 부분이 1번씬엔 아예 없고 0번씬에도 초기화하는 부분이 없어서 멘붕이 왔었다.

이유

다양한 매체에서 정보를 조사한 결과,
내 상황과 제일 근접한 상황이 이 게시글이였다.

요약하자면 씬에서 어떤 오브젝트도 특정 SO를 ref하지 않는다면 해당 SO 인스턴스를 메모리에서 unload시킨다는 글이다.

https://discussions.unity.com/t/resolved-when-reference-asset-from-scriptableobject-is-load-and-unload-from-memory/714761/12

다시 내 프로젝트를 보니 1번 씬에서는 해당 SO를 참조하는 monobehavior 클래스가 존재하지 않았다.

위 포럼에 따르면 SO를 참조하는 monobehavior 클래스가 없으므로 1번 씬이 로드되고
유니티에서 SO 인스턴스를 unload 시킨 것같았다.

그리고 0번씬에 다시 돌아가니 해당 SO 인스턴스를 다시 생성해서 값이 초기화 된 것이다.

이 글을 보고 1번씬에 해당 SO 인스턴스를 참조하는 간단한 monobehavior 클래스를 생성하니
정말 유지가 되었다!

profile
코딩 창고!

0개의 댓글