본문 바로가기
유니티 공부/Unity

Unity - ScriptableObject

by 코딩하는 돼징 2023. 5. 10.
반응형

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);
    }
}

 

반응형

댓글