728x90
반응형
ScriptableObject란 무엇인가?
ScriptableObject는 Unity에서 사용되는 데이터 컨테이너 클래스다.
일반적인 MonoBehaviour와 달리, ScriptableObject는 씬에 존재하지 않고, 독립적으로 데이터 자산을 저장할 수 있는 기능을 제공한다.
이 기능을 통해 게임 개발자는 재사용 가능하고, 관리하기 쉬운 데이터 구조를 만들 수 있다.
ScriptableObject의 장점
데이터 재사용성 | 다양한 씬과 게임 오브젝트에서 동일한 데이터를 공유할 수 있다. |
데이터 관리 용이성 | 인스펙터를 통해 데이터를 쉽게 수정하고 관리할 수 있다. |
메모리 효율성 | 데이터가 씬에 포함되지 않아 메모리 사용량을 줄일 수 있다. |
디자인과 코드 분리 | 게임 로직과 데이터를 분리하여 코드의 유지보수성을 높일 수 있다. |
ScriptableObject 생성 방법
예시로 아이템 데이터를 저장하는 클래스를 만들어보겠다.
1. ScriptableObject 클래스 작성
먼저 ScriptableObject를 상속받는 클래스를 작성한다.
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "New Item Data", menuName = "Item/Item Data", order = 0)]
public class ItemDataSO : ScriptableObject
{
public string Id;
public string Name;
public Sprite Icon;
}
위의 코드에서 CreateAssetMenu는 에디터에서 이 클래스를 생성 할 수 있게 해준다.
2. ScriptableObject 인스턴스 생성
에디터에서 우클릭 > create > 스크립트에서 적었던 menuName의 경로를 따라가면 아래 처럼 만들 수 있다.
만든 후 필요한 데이터를 입력하고 저장한다.
3. ScriptableObject 사용
생성된 ScriptableObject 인스턴스를 다른 스크립트에서 사용할 수 있다.
아래 코드처럼 변수를 만들고 인스펙터에서 값을 넣어주면 참조가 된다.
using UnityEngine;
public class Item : MonoBehaviour
{
public ItemDataSO ItemData;
void Start()
{
Debug.Log(ItemData.Id);
}
}
결론
ScriptableObject는 Unity에서 데이터 관리의 효율성을 극대화할 수 있는 강력한 도구다.
이를 활용하여 데이터를 재사용하고, 관리하며, 코드와 디자인을 분리할 수 있다.
ScriptableObject를 잘 활용하면, 프로젝트의 복잡성을 줄이고, 유지보수성을 높일 수 있다.
728x90
반응형
'Unity' 카테고리의 다른 글
SMB(State Machine Behaviors)와 FSM(Finite State Machine) 비교 (0) | 2024.07.03 |
---|---|
Animator StringToHash 유니티 최적화 (0) | 2024.07.02 |
StateMachineBehaviour 사용 방법 (0) | 2024.06.26 |
Coroutine과 UniTask 비교 (0) | 2024.06.22 |
Coroutine 사용 방법 (0) | 2024.06.18 |