직렬화와 역직렬화
Unity 에서 많이 생성되는 적이나 투사체 등의 오브젝트에 주로 Prefab 기능을 사용하곤 한다. 이 Prefab과 같이 어딘가에 정보를 보관했다가 그대로 다시 가져올 수 있는 것을 직렬화와 역직렬화라고 한다.
이는 이미 Unity 에서 여러 요소에 적용되어 있는 부분이다.
PlayerPrefs
간단한 값을 저장, 불러오기 할 때 좋다. 저장할 때 Key와 Value를 입력하여 저장하고 불러올 때 Key값을 이용하여 불러온다.
CSV
엑셀 형태의 파일로 기획자와 협업할 때 편리하다.
직렬화 시 엑셀에 쓰인 내용을 그대로 표현한다. PlayerPref과는 달리 '\n' + ', '로 구분된다.
역직렬화시 위 구분점을 토대로 구분하여 실제 데이터에 대입한다.
XML
저장할 값들이 어떤 Key값을 가지는지, 구조가 어떻게 되는지까지 모두 알 수 있다.
C# 자체에 XML에 관련된 클래스와 함수가 존재하여 사용하기 용이하다.
JSON
JSON 방식에는 크게 3가지 방식이 있다. 하지만 유니티에서는 JsonUtility 기능만 사용한다. 유니티 상에서 제일 빠르다는 장점이 있지만 다양한 포맷을 작업할 수 없다는 단점이 있다.
Unity 에서 직렬화를 위한 규칙을 제공한다.
https://docs.unity3d.com/kr/2021.3/Manual/script-Serialization.html
스크립트 직렬화 - Unity 매뉴얼
직렬화는 데이터 구조 또는 게임 오브젝트 상태를 Unity가 보관하고 나중에 다시 복구할 수 있는 포맷으로 변환하는 자동 프로세스입니다.
docs.unity3d.com
- 저장
File.WriteAllText(Application.persistentDataPath + "/UserData.txt", json);
File.WriteAllText("어디 경로에" , "어떤 데이터를?");
Application.persistentDataPath는 현재 운영체제에 따른 임시 저장 경로를 말한다.
- 불러오기
JsonUtility.FromJson<UserData>(jsonData);
JsonUtility.FromJson < 어떤 형식으로 > ( 어떤 json 데이터를 )
다음과 같이 정보를 불러올 수 있다.
이 처럼 유니티에서는 데이터를 저장(직렬화 및 역직렬화) 할 수 있는 방법이 다양히 존재한다. 데이터의 경중을 따져가며 적재적소에 알맞은 방식을 적용하는 것이 중요하다고 생각한다.
24.05.30 Today I Learned
'Today I Learned' 카테고리의 다른 글
[TIL][Unity] 싱글톤 패턴 (0) | 2024.06.04 |
---|---|
[TIL][Unity] 오브젝트 풀링 (0) | 2024.06.03 |
[TIL][Unity] 트러블슈팅 - 움직이는 오브젝트에서 오디오 재생 (0) | 2024.05.29 |
[TIL][Unity] 트러블슈팅 - 같은 레이어 개체 간 충돌 무시 (0) | 2024.05.28 |
[TIL][Unity] 트러블슈팅 - Invalid AABB inAABB 에러 (0) | 2024.05.27 |