1. 직렬화의 의미
- 객체의 상태를 저장하거나, 전송할 수 있는 상태로 변환하는 프로세스.
- Unity에서는 이를 사용해서 프리팹, 에셋, 씬 등의 데이터를 저장한다.
1.1. 프로퍼티와 필드
- 필드 : 클래스의 변수. 데이터를 직접 저장한다.
- 프로퍼티 : 메서드처럼 동작하는 멤버. get, set 접근자로 필드에 접근한다.
1.2. Unity의 직렬화 규칙
- Public 필드 : 자동 직렬화
- private 필드 : [SerializeField] 속성을 붙여야 직렬화된다.
- 프로퍼티 는 직렬화되지 않는다.
- 프로퍼티는 메서드이다. get, set 은 코드 블럭을 가질 수 있기 때문에, 단순한 데이터 저장 이상의 로직을 가질 수 있다.
- 직렬화는 데이터 저장이 목적이다. 로직을 포함하는 프로퍼티는 저장 대상이 아니다.
1.3. 왜 이걸 정리했는가?
- 프리팹으로 맵을 저장하고 다시 불러올 때, 에디터 그리드에 타일의 정보가 정상적으로 표시되지 않는 이슈가 있었다.
- 자세히 살펴보니 모든 타일이 자신의 위치를 (0, 0) 으로 갖고 있었다. 하지만 저장하기 전에는 분명 각 타일이 자신의 정보를 올바르게 갖고 있었다.
- 결과적으로 Tile.cs 에서 GridPostion 이라는 프로퍼티로만 저장하던 게 문제였다. gridPosition 이라는 필드를 추가해서 해결.
'Work, Study > Unity' 카테고리의 다른 글
241224 회전하는 화살 구현하기 (0) | 2024.12.24 |
---|---|
241129 투명 이미지를 마스크로 사용하기 (0) | 2024.11.29 |
레이캐스트 관련 정리 (0) | 2024.08.24 |
Awake, OnValidate, Initialize 차이점 (0) | 2024.07.29 |