직렬화
docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/concepts/serialization/
Unity의 시리얼라이저는 실시간 게임 환경에서 실행되므로 성능에 큰 영향을 미친다. 따라서 Unity의 직렬화는 다른 프로그래밍 환경의 직렬화와 다르게 동작한다. 필드 직렬화를 사용하려면 다음을 조건을 만족해야 한다.
- public이거나 SerializeField 속성이 있어야 함
- static이 아니어야 함
- const가 아니어야 함
- readonly가 아니어야 함
- 직렬화할 수 있는 fieldtype이 있어야 함(아래의 직렬화할 수 있는 단순 필드 타입 참조)
마지막 조건을 통해서 직렬화할 수 있는 fieldtype이 따로 있다는 것을 알 수 있다.
직렬화할 수 있는 단순 필드 타입
- Serializable 속성이 있는 비추상, 비일반 커스텀 클래스
(아래의 커스텀 클래스가 직렬화될 수 있도록 하는 방법 참조) - Serializable 속성이 있는 커스텀 구조체
- UnityEngine.Object에서 파생된 오브젝트에 대한 레퍼런스
- 기본 데이터 형식(int, float, double, bool, string 등)
- 열거형 타입
- 특정 Unity 내장 타입: Vector2, Vector3, Vector4, Rect, Quaternion, Matrix4x4, Color, Color32, LayerMask, AnimationCurve, Gradient, RectOffset, GUIStyle
직렬화할 수 있는 컨테이너 필드 타입
- 직렬화할 수 있는 단순 필드 타입의 배열
- 직렬화할 수 있는 단순 필드 타입의 List<T>
반응형
'Programming > Unity' 카테고리의 다른 글
[유니티] XR Interaction Toolkit 패키지 셋팅 (0) | 2021.06.29 |
---|---|
[유니티] RayCast (0) | 2021.06.28 |
[유니티] 오큘러스_jdk not found (0) | 2021.03.30 |
[유니티] 캐릭터 점프 (2) | 2021.02.16 |
[유니티] 캐릭터 애니메이션 루프 (0) | 2021.02.10 |