JSON 형식의 데이터를 오브젝트로 변환하거나 오브젝트를 JSON 문자열로 변환하는 데 사용할 수 있는 유니티 내장 기능.
자체 기능이라 설치가 필요 없음.
| Test Data |
|---|
![]() |
![]() |
![]() |
![]() |
| DataSerializer |
|---|
![]() |
| Test |
|---|
![]() |
Serializable 어트리뷰트를 이용하면 직렬화 가능하다.| Serializable 어트리뷰트 Test |
|---|
![]() |
![]() |
| DataDeserializer |
|---|
![]() |
| Test |
|---|
![]() |
| 새로운 Test |
|---|
![]() |
![]() |
| ErrorTest |
|---|
![]() |
| Test |
|---|
![]() |
![]() |
| ErrorTest |
|---|
![]() |
| Test |
|---|
![]() |
![]() |
| Test |
|---|
![]() |
![]() |
성능 : Unity의 내부 직렬화 시스템을 기반으로 작동하기 때문에 매우 빠름. 특히 모바일 환경이나 대량의 데이터를 빈번하게 처리해야 하는 경우 성능 이점이 두드러짐.
통합 : Unity에 내장되어 있어 별도의 패키지 설치나 임포트가 필요 없음. UnityEngine 네임스페이스에 속해 있어 접근성이 좋음.
경량 : 외부 종속성 없이 코드 베이스가 가볍고 컴파일 시간이 빠름.
Unity 타입 지원: Vector3, Quaternion, Color, Rect 등 Unity의 핵심 구조체를 완벽하게 지원하며 추가적인 설정이 필요 없음.
타입 지원 제한:
딕셔너리 (Dictionary<TKey, TValue>) 타입을 직접 직렬화/역직렬화할 수 없음.
최상위 배열/리스트 (List 또는 T[])를 직접 처리할 수 없으며, 컨테이너 클래스로 감싸야 함,
사용자 정의 인터페이스(interface)나 추상 클래스(abstract class)를 지원하지 않음.
필드 제한: 속성(Property)을 직렬화하지 못하고, 오직 public 필드나 [SerializeField]가 붙은 private 필드만 처리할 수 있음.
유연성 부족:
JSON 포맷을 커스터마이징할 수 있는 옵션이 거의 없음. (예: 필드 이름 변경, 특정 필드 무시 등).
JSON 문자열에 필드가 누락되었을 때 기본값을 설정하는 기능이 제한적임.
컨트롤 불가: 역직렬화 시 new T()와 같이 생성자가 강제로 호출되어 초기화 로직이 원치 않게 실행될 수 있음. (외부 라이브러리는 일반적으로 생성자를 우회.)