
직렬화란
자료 구조 또는 게임 오브젝트의 상태를 유니티가 저장할 수 있고 추후 Reconstruct 할 수 있는 포맷으로 자동 변환하는 프로세스
Serialization (직렬화)은 개체를 저장하거나 메모리, DB 또는 File로 전송하기 위해서 개체를 Byte Stream (데이터를 바이트 단위로 전송하는 것) 으로 변환하는 프로세스이다. 주 목적은 필요할 때 다시 개체로 만들 수 있도록 개체의 상태를 저장하는 것으로, 역 프로세스를 Deserialization (역직렬화)이라고 한다.
유니티는 직렬화를 사용하여 디바이스의 메모리에서 scene, asset, asset bundle을 저장하고 로드한다. 여기에는 monobehavior, scriptableobjects 처럼 scripting api 객체에 저장된 데이터를 포함한다.
이진으로 저장하기도 하지만, 보통 사람이 이해하기 쉽도록 텍스트나 아스키 형태로 저장한다. 주로 XML(Extensible Markup Language), YAML(Yet Another Markup Language), JSON이 많이 쓰인다.
인스펙터 창은 오브젝트의 직렬화된 필드 값을 보여준다. 인스펙터에서 값을 변경할 때 인스펙터는 직렬화된 데이터를 업데이트하고, Inspected object의 업데이트를 수행하는 역직렬화를 트리거한다.
유니티 빌트인 직렬화


인스턴스화
직렬화 규칙
static, const, readonly 는 필드직렬화 불가능
[SerializeField], [HideInInspector] 어트리뷰트
[Serializable]
참고