[TIL] Unity - 데이터 직렬화 - day 92

뭉크의 개발·2023년 11월 27일
0

Unity - Camp

목록 보기
60/70
post-thumbnail

🐧 들어가기 앞서

게임 데이터를 저장, 불러오기를 제작했다.
그러나 간과한게 있었다...
유니티에서는 MonoBehaviour나 GameObject 같은 특정 객체를 직접적으로 직렬화하는 것이 어려울 수 있다.

🐧 오늘 배운 것

Unity의 MonoBehaviour, GameObject, Transform 등과 같은 객체는 직접적으로 JSON으로 직렬화할 수 없다. 이러한 객체를 담은 클래스는 복잡한 내부 참조와 엔진에 의존적인 상태를 가지고 있어, 직렬화 과정에서 문제가 발생할 수 있다.(실제로 문제가 생겼다.)

기본 데이터 타입(int, string, float 등)과 순수한 C# 클래스는 JSON으로 직렬화해야 한다.. Unity 엔진의 특정 기능에 의존하지 않기 때문에 안전하게 저장하고 로드할 수 있기 때문이다.

현재 우리의 프로젝트 중 DataManager에 있는 CageController 리스트와 같은 Unity 객체를 참조하는 필드가 다수다. 직접적으로 직렬화할 수 없으므로, 이 객체들의 상태를 나타내는 핵심 데이터만 별도의 클래스(CageState와 같은)로 추출해야 한다.

Unity 객체를 참조하는 필드 대신, 그 객체들의 상태를 나타내는 간단한 데이터 구조를 사용하는 방법이 있다.

예를 들어, CageController의 온도, 밝기, 청결도와 같은 정보만을 저장하는 CageState 클래스를 만들어 사용하는 방식이다.

🐧 게임에 구현한다면?

DataManager와 같은 클래스에서 MonoBehaviour나 GameObject에 의존하는 필드 대신, 직렬화 가능한 데이터 클래스를 사용해야한다.

🐧 내일 할 일

팀원에게 설명하기..

0개의 댓글