Unity에서 필드를 직렬화하려면 어떻게 해야하는지 설명해주세요.
SerializedField
- 기본적으로 public으로 선언된 변수, 배열, 리스트는 직렬화되어 인스펙터 창에 표시됨
- private으로 선언된 변수, 배열, 리스트는
[SerializedField]를 추가해 직렬화 가능
- 기본적으로 직렬화되지 않는
Dictionary나 클래스도 Serializable을 추가해 직렬화 가능하게 만들 수 있음
[Serializable]
public abstract class BaseBuff : IObservable
{
[SerializeField] protected BuffData buffData;
[SerializeField] private int stack;
[ShowInInspector, ReadOnly] private int addedFrame;
...
직렬화의 장점
- 에디터 상에 값이 노출되므로 매번 코드를 수정하는 것이 아니라, 런타임에서 해당 변수를 수정하면서 적용해볼 수 있음
- 씬이나 프리팹이 저장될 때 직렬화된 정보를 저장하므로 각각이 다른 값을 가지도록 저장할 수 있음