정명직의 게임개발

[Unity] ScriptableObject 한방에 이해하기 본문

Unity

[Unity] ScriptableObject 한방에 이해하기

정명직 2023. 7. 10. 23:24

ScriptableObject?

ScriptableObject는 Unity에서 제공하는 데이터 컨테이너 타입 중 하나입니다. 주로 데이터를 저장하고 관리하는데 사용됩니다. MonoBehaviour와는 달리 게임 오브젝트에 부착할 수 없지만, 다양한 종류의 데이터를 담는 컨테이너로 사용할 수 있습니다.

ScriptableObject 사용법 

일단 ScriptableObject을 만들기 위해서는 ScriptableObject클래스를 상속받는 새로우 클래스를 정의 해야 합니다. Item 클래스를 정의해보겠습니다.

Item 클래스

CreateAssetMenu 속성은 스크립터블 오브젝트를  빠르고 쉽게 생성할 수 있게 만들어주는 속성입니다.

fileName : 새로 제작하게되면 임시로 생성되는 이름

menuName : 유니티 메뉴에 표기되는 이름, /를 사용해서 경로 설정 가능

 

위에 설정 해준 menuName으로 경로가 나오는 모습을 볼 수 있다.
Item 스크립터블 오브젝트

생성해준 Item 스크립터블 오브젝트에 값을 설정 해주었습니다.

 

아이템 정보를 출력해주는 스크립트
아이템 스크립터블 오브젝트 할당

아이템 정보를 출력해주는 로직을 작성하여 방금 생성한 Itme 스크립터블 오브젝트를 할당 해주었습니다. 

 

Console 창

아까 생성한 item 스크립터블 오브젝트 정보가 정상적으로 출력되는 모습을 볼 수 있습니다.

 

ScriptableObject 주요 특징

1. 데이터 저장

ScriptableObject는 특정한 데이터를 디스크에 저장하고, 재사용할 수 있게 해줍니다. 예를 들어, 게임 내의 NPC, 아이템, 레벨 등의 데이터를 ScriptableObject로 저장하고 사용할 수 있습니다.

 

2. 게임 세션 간 데이터 유지

일반적으로 MonoBehaviour의 데이터는 게임이 종료될 때 잃어버리게 됩니다. 하지만 ScriptableObject는 디스크에 데이터를 저장하기 때문에, 게임 세션 간에 데이터를 유지할 수 있습니다.

 

3. 자원 최적화

ScriptableObject를 사용하면, 동일한 데이터를 여러 오브젝트에서 공유할 수 있습니다. 이를 통해 메모리 사용량을 최적화하고 성능을 향상시킬 수 있습니다.

 


복잡한 게임을 구현할 때 데이터를 저장하고 재사용하는 일이 많이 지기 때문에 ScriptableObject 필수적으로 사용해야 합니다. 그러므로 여러 가지 예제를 통해서 ScriptableObject 사용해보면서 꼭 이해하시길 바랍니다.

'Unity' 카테고리의 다른 글

[Unity] SerializeField, Serializable ??  (0) 2023.07.06
[Unity] 오브젝트를 움직여 보자!  (2) 2023.07.05
[Unity] JSON 저장 & 불러오기 구현하기  (2) 2023.07.03