[Unity]System.Serializable

식혜드식혜·2025년 5월 11일

Unity

목록 보기
3/6
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]로 선언되어야 한다.

profile
안녕하세요! 유니티 공부 중인 고3 학생입니다

0개의 댓글