공부/Unity

[unity]Serializable vs SerializeField

개발의 피 2023. 5. 6. 22:59

https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=90653 

 

「SerializeField」와 「Serializable」 차이가 있나요 - 인디 게임 개발 마이너 갤러리

저어는 「SerializeField만 썼는데... 후자도 되더라구요

gall.dcinside.com

궁금해져서 찾아보다가 설명 찰떡같이 해준 글 발견...

 

 

Serializable

- 클래스나 구조체에 적용

-  구조체나 클래스위에 써주면 걔네의 public 변수들이 에디터에 구멍으로 보이게 되는거

유니티에서는 UnityEngine.Object 기반이 아니면 관리 안해주는데,

System.Object 기반을 유니티에서 관리하도록 하고 싶을 때 Serializable를 붙여서 관리 할 수 있도록

 

 

SerializeField

- 필드에 적용

- private, protected 필드를 Inspector에서 편집하고 싶을 때 (캡슐화는 유지)

 - public이 아니라서 노출되지 않은 애들 에디터에 구멍 내달란 얘기

 

SerializedField는 유니티에서 이 변수도 관리해달라고 명시하는 것 (public field는 자동으로 관리 해줌)

 

+) 직렬화, 역직렬화 설명

https://youtu.be/qrQZOPZmt0w?si=R1m432u2y79ehzIo

 

 

직렬화 :오브젝트를 연속된 문장 형태나 연속된 바이트 데이터로 바꾸는 과정

역직렬화 : 전송된 데이터를 바탕으로 다시 객체를 생성하는 과정