728x90
Serialization attribute 사용해서 클래스를 직렬화
직렬화를 하는 이유는? 영속성을 유지하기 위해.
값이 바뀌어도 기존의 값을 저장해둔 저장소를 가져다가 사용하고 싶기 때문에, 재사용성 때문인 것 같다.
클래스 앞에 [SerializeField] 어트리뷰트를 지정한다.
[SerializeField]는 구조체를 직렬화 할 수 있음을 나타낸다.
직렬화를 하면 프로젝트 내부의 inspector에서 직렬화된 객체의 값을 변경할 수 있다.
변경해도 스크립트 내부에 정의된 값이 변경되는 것은 아니다.
https://docs.unity3d.com/kr/2020.3/Manual/script-Serialization.html
스크립트 직렬화 - Unity 매뉴얼
직렬화는 데이터 구조나 오브젝트 상태를 Unity 에디터가 저장하고 나중에 재구성할 수 있는 포맷으로 자동으로 변환하는 프로세스를 말합니다. Unity 에디터에서는 저장 및 로딩, 인스펙터 창, 인
docs.unity3d.com
* 직렬화 규칙
- public 이거나 SerializeField 속성이 있어야 함
- static이 아니어야 함
- const가 아니어야 함
- readonly가 아니어야 함
- 직렬화 할 수 있는 fieldtype이 있어야 함
cf) 직렬화 할 수 있는 단순 필드 타입
- Serializable 속성이 있는 비추상, 비일반 커스텀 클래스
(아래의 커스텀 클래스가 직렬화될 수 있도록 하는 방법 참조) - Serializable 속성이 있는 커스텀 구조체
- UnityEngine.Object에서 파생된 오브젝트에 대한 레퍼런스
- 기본 데이터 형식(int, float, double, bool, string 등)
- 열거형 타입
- 특정 Unity 내장 타입: Vector2, Vector3, Vector4, Rect, Quaternion, Matrix4x4, Color, Color32, LayerMask, AnimationCurve, Gradient, RectOffset, GUIStyle
728x90