Araina’s Blog

ScriptableObject는 빌드 버전과 에디터 버전에서 다르게 동작한다. 본문

Develop Study/Unity

ScriptableObject는 빌드 버전과 에디터 버전에서 다르게 동작한다.

Araina 2024. 2. 11. 23:25


 

 

1. ScriptableObject

ScriptableObject는 Unity에서 데이터를 관리하는 컨테이너 중 하나로, 값의 사본이 불필요하게 많이 생성되는 것을 방지하여 메모리 사용량을 절약하는데 유용하게 사용됩니다.

세 종류의 몬스터가 서로 같은 체력과 공격력을 가지고 있다고 가정하면, 각각의 프리팹이 개별적인 데이터를 지니고 있기 때문에 몬스터의 수가 늘어나면 그만큼 사본의 수도 늘어나 메모리가 크게 낭비됩니다.

하지만 ScriptableObject를 사용하면, 게임 내 모든 몬스터가 하나의 ScriptableObject 데이터를 참조하여 사용하기 때문에 아무리 몬스터의 수가 늘어나도 사본의 수는 늘어나지 않습니다.

 


 

2. 에디터 버전과 빌드 버전은 다르다.

Unity 에디터 상에서 ScriptableObject 데이터의 값을 변경해 보면 해당 ScriptableObject를 참조하고 있는 모든 오브젝트의 값이 동시에 변경되는 모습을 볼 수 있습니다.

이는 Unity 에디터 상에서 플레이 모드에 진입해도 마찬가지입니다.

하지만 빌드 버전에서는 런타임 도중에 ScriptableObject의 데이터를 수정할 수 없도록 되어 있습니다.

이 때문에 게임 플레이 도중에 값이 바뀔 수 있는 경우에는 ScriptableObject를 사용하면 안 됩니다.

이는 게임의 보안 및 안전성, 불변성을 보장하기 위한 조치로, 캐릭터의 최초 스테이터스 값, 몬스터의 체력이나 공격력처럼 중간에 값이 바뀔 가능성이 없는 경우에만 ScriptableObject를 사용해야 낭패를 피할 수 있습니다.

 


 


수고하셨습니다!


Comments