배운거 잊지 않도록 하는 메모 겸 튜토리얼성 정보예요.
본인도 막 배운 정보니까 틀린 점 있으면 댓글 부탁.
1. 직렬화란?
데이터를 읽고 쓰기 편하게 정해진 형식으로 나타낸 것.
저장 시스템과 번역 시스템에서 자주 쓰는 JSON, CSV도 직렬화 형식 중 하나이다.
2. 유니티의 직렬화
유니티 또한 오브젝트의 상태를 저장하기 위해 자체적인 직렬화 형식이 있다.
프리팹 파일을 메모장으로 열어보면 간단하게 확인이 가능하다.
+ 프리팹의 직렬화 된 Transform 정보
유니티는 기본적으로 이 직렬화된 데이터를 읽고 인스펙터에 표시하는 방법으로 동작하며, 인스펙터에서 수정된 사항은 직렬화되어 파일에 저장된다.
3. [SerializeField]
[SerializeField] 는 필드를 직렬화하여 인스펙터에 표시될 수 있도록 해준다.
public 또한 자동으로 직렬화가 된다.
+ public과 [SerializeField]가 붙은 필드만 파일에 직렬화되어 저장된 모습
직렬화되지 않은 필드는 유니티 인스펙터상에 표시되지 않으며 상태가 저장되지 않고 초기화된다.
4. 주의해야 할 점
직렬화되지 않은 필드를 가진 오브젝트를 복제해보자.
ObjectScript는 private moveSpeed 필드와 그것을 변경하는 함수, moveSpeed를 로그로 띄워주는 함수로 구성되어있다.
Test 스크립트에서 원본 오브젝트의 moveSpeed를 변경한 후, 복제 오브젝트를 만들고 둘의 moveSpeed값을 띄워보면
위와 같이 직렬화되지 않은 필드는 초기화가 되어있는 것을 확인할 수 있다.
직렬화되지 않은 필드는 저장은 물론 복제도 되지 않는 점에 유의하자.
정보글 개추
개추개추