using UnityEngine;
[System.Serializable]
public class InventoryItem
{
public ItemData itemData;
public int quantity;
}
이 클래스를 Unity 인스펙터에 표시할 수 있게 만들어주는 마커 역할이다.
기본적으로 C# 클래스는 Unity의 인스펙터에 보이지 않는다
하지만 [System.Serializable]을 붙이면,
Unity는 이 클래스를 "직렬화(serialize) 가능"하다고 판단하고
이 클래스를 필드로 가지고 있는 MonoBehaviour나 ScriptableObject에서 표시해준다.
public class Inventory : MonoBehaviour
{
public InventoryItem item;
}
InventoryItem이 [System.Serializable]이 없다면 item은 인스펙터에 표시 X
[System.Serializable]이 붙어 있으면 item의 itemData, quantity도 인스펙터에 표시
[System.Serializable] 은 클래스(혹은 struct)를 인스펙터에서 노출 가능하게 해준다.
인스펙터에 표시되려면 필드 타입이 직렬화 가능해야 하고,
필드 자체는 public이거나 [SerializeField]로 선언되어야 한다.