Scriptable Object
: 클래스 인스턴스와는 별도로 대량의 데이터를 저장하는 데 사용할 수 있는 데이터 컨테이너
유니티 오브젝트를 상속받은 클래스로 Unity Serialize 시스템을 가지고 있음
- serialize: 클래스나 오브젝트를 스트링이나 일차원 배열 형태로 변환하는 것
- 실제 파일을 열어 보면 저장된 텍스트 내용 확인 가능
- 데이터 컨테이너로 데이터 공유에 사용할 수 있고, 이를 통해 메모리 사용량 줄일 수 있음
- Scriptable Object는 데이터를 참조 형태로 오브젝트에서 가져올 수 있게 함으로써 메모리 할당을 최소화하고 고유한 값을 가질 수 있게 함
주요 사용 사례)
- 사본이 생성되는 것을 방지하여 프로젝트의 메모리 사용을 줄임
연결된 MonoBehaviour 스크립트에 변경되지 않는 데이터를 저장하는 프리팹이 있을 때 주로 사용
- 프리팹을 인스턴스화할 때마다 해당 데이터의 자체 사본이 생성됨
- 이러한 방법을 사용하여 중복 데이터를 저장하는 대신 ScriptableObject를 이용하여 데이터를 저장한 후 모든 프리팹의 레퍼런스를 통해 액세스할 수 있음
- 즉, 메모리에 데이터 사본을 하나만 저장함
MonoBehaviour와 마찬가지로 ScriptableObject는 기본 Unity 오브젝트에서 파생되나, MonoBehaviour와는 달리 게임오브젝트에 ScriptableObject를 연결할 수 없음
-> 프로젝트의 에셋으로 저장해야 함
- 에디터 사용 시, ScriptableObject에 데이터를 저장하는 작업은 편집할 때나 런타임에 가능
- 이는 ScriptableObject가 에디터 네임스페이스와 에디터 스크립팅을 사용하기 때문
- 배포된 빌드에서는 ScriptableObject를 사용하여 데이터를 저장할 수 없으나, 개발 시 설정한 ScriptableObject 에셋의 저장된 데이터를 사용할 수 있음
- 에디터 툴에서 에셋 형태로 ScriptableObject에 저장한 데이터는 디스크에 작성되므로 세션 간에도 그대로 유지됨
'Old > Unity' 카테고리의 다른 글
Event (0) | 2023.08.31 |
---|---|
RPG Project 오류 일지 - Respawn (0) | 2023.08.15 |
디자인 패턴 요약 (0) | 2023.07.24 |
체감형 AR 디자인 - 최적화 (0) | 2023.05.17 |
Object Pool (0) | 2023.05.06 |