개요

유니티에서 사용하는 어트리뷰트 [Serializable] 에 대해서 정리해본다.

[Serializable]이란?

[Serializable] 은 C#의 직렬화 시스템에 포함된 특성으로,

객체 데이터를 저장하거나 네트워크를 통해 전송할 수 있도록

이진 혹은 텍스트 형태(JSON)로 변환 가능하게 만들어주는 표식이다.

유니티에서는 자체 직렬화 시스템에 맞게 카스터마이즈해서 사용하기도 한다.

유니티를 개발하면서, 보통 Serializable는 직렬화 하기 위한 도구로 인식된다.

유니티에서 대게 직렬화는 인스펙터 창에 표시하기 위함인데,

이것은 Serializable을 커스터마이즈한 것이지, 본질적인 개념이 아니다.

Serializable는 데이터를 객체가 아니라 데이터로서 다루겠다는 선언이다.

C#에서 클래스는 논리와 행동을 가진 런타임 개체이다.

반면 유니티의 직렬화 시스템은 런타임 객체가 아니라 데이터의 구조에 관심을 둔다.

[Serializable]
public class Weapon
{
    public string name;
    public int damage;
}