728x90
반응형
엔진 프로젝트를 하다가 발견한 문제. Scriptable Object를 JSON으로 동적 저장을 하면, 변수들이 와다다 저장이 되는 게 아니라, instanceID만 저장이 된다!
사실 여기까지는 별다른 큰 문제는 없었지만... 문제는 유니티를 껐다 키는 순간 SO들의 instanceID가 모두 달라지면서, 이상한 값을 받아오게 되는 것이다!!
가장 초보적인 해결 방법으로, 객체 대신 객체의 고유한 ID를 저장하는 것으로 해결했다.
지금은 쉽게 보기 위해 문자열이지만, 문자열은 아무래도 무거우니 해시로 바꾸어 저장해도 나쁘지 않을 것 같다!
다만, 이건 근본적인 해결 방안이 아니다... 그 객체에 있는 모든 정보가 저장이 되지 않기 때문이다. 지금 프로젝트는 객체 내부 값은 변하지 않고, 객체만 필요했으니 괜찮지만, 그렇지 않은 경우도 있기 때문이다.
사실 객체의 값을 바꾸어 저장하고 싶으면, 굳이 SO를 쓸 필요는 없다. SO는 룩업테이블 형식으로 자주 쓰이니까 이런 방식도 좋을 것 같다. 그리고, 되도록이면 SO를 JSON으로 저장하지는 않는 게 좋겠다. 스프레드 시트를 연동하거나, 새로 객체를 만들어서 JSON으로 저장하는 게 좋을 것 같다.
728x90
반응형
'Unity' 카테고리의 다른 글
[Unity][최적화] 졸업작품 빌드 용량 줄이기 (0) | 2023.05.21 |
---|---|
[Unity][C#] 모두의 마블 게이지 만들기 (1) | 2022.11.13 |
[Unity][C#] 유니티 - 스프레드 시트 연동하기 (1) | 2022.11.05 |