2023. 9. 15. 00:03ㆍ내일배움캠프 Unity
1. 스크립터블 오브젝트란?
2. MonoBehaviour와의 차이
3. 스크립터블 오브젝트를 사용하는 방법
4. 스크립터블 오브젝트에 관한 내용
1. 스크립터블 오브젝트란?
"스크립팅 가능한 오브젝트"로 에셋의 인스턴스를 가리키는 참조를 저장해두고 사용해 메모리 사용량을 크게 줄일수 있다.
아래의 사진과 같이 기존 시스템에 비해 메모리 할당을 최소화하고 데이터가 고유한 값을 가질수 있게 한다.
2. MonoBehaviour와의 차이
2-1. 에셋의 내용을 변경하면 모든 참조하는 곳에 동일하게 변경된 내용이 반영됨
- 에셋은 인스터스화 되지 않고 고유한 하나의 파일로 저장됨
2-2. 유니티 콜백 중 OnEnable, OnDisable, OnDestroy만 받음
- OnEnable : 스크립터블 오브젝트가 instantiate 될 때 CreateInstance() 함수 호출 시 에디터에서 스크립트가 컴파일 된 후에 호출
- OnDisable : 스크립터블 오브젝트가 파괴되기 전에 호출, 에디터에서 스크립트가 컴파일 되기 전에 호출
- OnDestroy : 스크립터블 오브젝트가 파괴될때 호출
2-3. 게임 오브젝트에 Add 컴포넌트 할 수 없음
3. 스크립터블 오브젝트를 사용하는 방법
3-1. 스크립트
- MonoBehaviour 상속을 ScriptableObject로 변경한다.
- 클래스 윗줄에 [CreateAssetMenu()] 어트리뷰트를 만들어준다.
- 어트리뷰트에 매개변수를 채워준다.
- fileName : 생성된 스크립터블 오브젝트의 이름
- menuName : 스크립터블 오브젝트를 생성하는 메뉴의 이름(메뉴/하위메뉴 방식으로 만들수도 있음)
- order : 에셋 메뉴중 어느 순서에 표시할지(마지막 : int.MaxValue)
- 찍어낼 오브젝트가 가질 프로퍼티들을 추가해준다.
3-2. 유니티 에디터
- 상단 메뉴의 Asset / Create 에 menuName에 적은 이름으로 order번째에 추가되어있다.
- 선택하면 폴더에 fileName에 적은 이름을 가진 에셋이 생성된다.
- 스크립터블오브젝트를 상속받는 스크립트가 가진 프로퍼티들를 인스펙터 확인 및 수정할수 있다.
- 찍어낼 오브젝트들의 갯수에 맞게 스크립터블 오브젝트를 복사하고 각자 해당하는 데이터를 입력해준다.
- 스크립터블 오브젝트를 하나의 리스트에 넣어 사용하면 편리하다.
4. 스크립터블 오브젝트에 관한 내용
- 스크립터블 오브젝트는 기존에 Json, xml, csv등으로 관리하던 데이터를 Unity에서 쉽게 사용할 수 있도록 편의적으로 제공하는 기능
- 소규모의 데이터를 편하게 관리할 수 있지만 대용량의 데이터를 관리하기엔 엑셀이 편리하다.
- 때문에 에디터에서 편하게 관리가 필요한 데이터만 스크립터블 오브젝트를 사용하는 것도 좋은 개발 방향이 될 수 있다.
'내일배움캠프 Unity' 카테고리의 다른 글
[내일배움캠프 TIL] 25. 인벤토리 시스템을 강화해보자 (0) | 2023.09.21 |
---|---|
[내일배움캠프 TIL] 24. 인벤토리 시스템 (0) | 2023.09.20 |
[내일배움캠프 TIL] 22. 코루틴(coroutine) 개념 익히기 (0) | 2023.09.13 |
내일배움캠프 (Unity_8기) TIL 21일차 (0) | 2023.09.11 |
내일배움캠프 (Unity_8기) TIL 20일차 (0) | 2023.09.08 |