유니티/개념 정리
직렬화(Serialize)
fore4022
2024. 7. 24. 01:04
직렬화란?
- 에디터에서 클래스나 오브젝트를 컴퓨터 환경에 저장하거나, 나중에 재구성하기 위해서 변환하는 과정이다.
- 클래스, 오브젝트를 연속된 바이트 형태로 변환한다. 연속된 바이트 형태는 저장이나, 전달에 편리하다. 반대로, 연속된 바이트 형태를 클래스, 오브젝트로 변환하는 과정을 역직렬화(Deserialization)라고 한다.
핫 리로드란?
- 에디터가 실행 중에 스크립트의 변경을 감지했을 때, 변경을 에디터에 적용하기 위해 재시작 할 필요 없이, 즉시 적용 시켜주는 것을 말한다.
- 에디터는 스크립트가 변경될 때, 모든 스크립트의 직렬화 가능한 변수들을 임시로 저장한 이후, 에디터에 변경된 스크립트를 적용 시킨 후, 임시로 저장한 놓은 변수의 정보를 스크립트에 넣어준다.
직렬화 규칙
- 직렬화 규칙은, 직렬화 되는 대상이 만족하는 조건이라고 보아도 된다.
필드 직렬화 조건- public 또는 serializefield 속성을 가진다.
- static이 아니어야 한다.
- const가 아니어야 한다.
- readonly가 아니어야 한다.
- 직렬화 가능한 field type이 있어야 한다(직렬화 가능한 type이어야 한다.)
- serializefield 속성을 가지는 비추상, 비일반 클래스(generic을 사용하지 않는 클래스).
- serializable 속성이 있는 커스텀 구조체.
- UnityEngine.Object를 가지는 모든 레퍼런스 타입.
- 기본 데이터 타입(int, float, bool, string 등…)
- 열거형 타입
- 특정 Unity의 내장 타입 Vector2, Quaternion, Color, LayerMask 등
- 직렬화할 수 있는 단순 필드 타입의 배열 또는 List<T>이다.
- serializable 속성이 있어햐 한다.
- 추상적, 정적이 아니어야 한다.
- 제네릭이 아닌 클래스, 상속 받을 수 있다.