Inflearn Community Q&A
Category[] 직렬화
Written on
·
227
0
[SerializeField] 를 통해 IdentifiedObject에서 Category를 직렬화해주고 있는데요.
직렬화를 위해서는 다시 Category의 부모인 IdentifiedObject의 직렬화 가능한 멤버변수를 알아야 하는데 그렇다면
이론상 재귀 호출이 무한히 일어날 것 같은데 잘 작동이 되는 이유가 궁금합니다.
Quiz
이 시스템에서 IdentifiedObject 베이스 클래스의 주요 목적은 무엇일까요?
게임 오브젝트의 위치를 관리하기 위해서
데이터베이스에서 스킬이나 아이템 같은 데이터 오브젝트를 관리하기 위해서
캐릭터의 애니메이션 상태를 제어하기 위해서
플레이어 입력 이벤트를 처리하기 위해서
Answer 1
1
수강해주셔서 감사합니다.
다음은 IdentifiedObject(강의에서 보게되실 Effect 객체)의 meta Data입니다.
주황색을 보시면 codeName은 string형이므로 값 자체가 Serialize 됐지만, Category와 그 아래 Icon은 유니티 객체이므로 FileID와 GUID(=참조 정보)만 Serialize된 것을 볼 수 있습니다.
UnityEntine.Object를 상속 받고 있는 모든 유니티 객체는 직렬화될 때 해당 객체의 참조 정보(FileID, GUID 등)만 직렬화됩니다. Instantiate 함수를 사용하거나 Scene에서 생성될 때 이 참조 정보를 이용하여 내부 AssetDatabase에서 해당 객체를 찾아와 변수에 연결해주는겁니다.
Category는 IdentifiedObject를 상속 받고, IdentifiedObject는 ScriptableObject를 상속 받고 있는 유니티 객체이므로 직렬화가 일어날 때 Category들에 대한 참조 정보만 직렬화되므로 내부 변수에 접근하지 않기 때문에 Loop가 일어나지 않습니다.
감사합니다.





