반응형
ScriptableObject
대량의 데이터를 저장하는데 사용할 수 있는 데이터 컨테이너이다. 게임 오브젝트에 부착할 필요가 없다.
장점
1. MonoBehaviour는 GameObject에 종속되어 있어 GameObject가 파괴될 때 같이 파괴되면서 데이터의 유연성과 재사용성을 제한 할 수 있다. 하지만 ScriptableObject은 데이터 만을 나타내기 때문에 Scene과 GameObject에 무관하다.
2. 인스턴스화를 생성하면서 메모리를 할당하지 않고 Asset으로 저장되면서 단일 인스턴스로 사용 가능하다. 이는 프로젝트 내의 여러 위치에서 참조 될 수 있고 내용이 수정되면 참조 하는 모든 곳에서 동일 하게 반영됨을 의미한다.
Unity에서 사용 예시
CreateAssetMenu를 통해서 ScriptableObject를 에디터 상에서 생성할 수 있도록 한다.
[CreateAssetMenu(menuName = "Item/Item")]
menuName속성은 해당 생성 메뉴의 경로를 지정하며 Item이라는 상위 메뉴의 하위 메뉴로 Item이라는 생성메뉴가 등록된다. 해당 경로를 따라서 ScriptableObject를 생성할 수 있다.
public class ItemData : ScriptableObject
{
// 아이템 설명
public string description;
// 아이템 아이콘 이미지
public Sprite icon;
// 실제 게임에서 아이템을 나타낼 3D 모델을 저장하는 GameObject
public GameObject gameModel;
}
아래와 같이 인스턴스화하여 사용할 수 있다.
public class Inventory : MonoBehaviour
{
public List<ItemData> items = new List<ItemData>();
public void AddItem(ItemData newItem)
{
items.Add(newItem);
}
}
반응형
'유니티 공부 > Unity' 카테고리의 다른 글
Unity - SetActive, activeSelf (0) | 2023.05.12 |
---|---|
Unity - 싱글톤(Singleton), Manager (0) | 2023.05.11 |
Unity - Transform.LookAt() (0) | 2023.05.09 |
Unity - Quaternion.LookRotation() (0) | 2023.05.09 |
Unity - 오일러(Euler) vs 쿼터니언(Quaternion) (2) | 2023.05.08 |
댓글