OBJECT (하나의 객체) -> STREAM OF BYTES(연속된 바이트)로
=> 오브젝트 내에서 사용하는 데이터들을 순서대로 쭉 나열시키는 것
(나열 시키는 방법은 binary가 될 수도 있고, json, xml 같은 Text 파일이 될 수도 있다.)
이제 이 나열된 바이트를 FILE로 만들거나 DB에 저장하거나 MEMORY에 올릴 수 있다.
-> 이렇게 만들어진 FILE, DB, MEMORY를 다시 재조립(STREAM OF BYTES) 하여 OBJECT로 만드는 것을 Deserialization(역직렬화)라 한다.
Unity에서 직렬화는
1. 파일 읽기 / 쓰기
(asset을 읽고 쓰고 하는 과정들, 여기서 Asset 이란 Unity editor의 assets 폴더 안에 있는 모든 것들)
2. Inspector window
(asset을 선택하면 asset의 데이터들이 인스펙터 창에 표기가 되는데 이 데이터들은 직렬화되어 있는 데이터들이다.(데이터 내용이 쭉 나열되어 있음) -> 스크립트에서 캡슐화를 위해 public으로 객체를 선언하지 않고 default인 private로 선언을 하게 되면 그 객체의 정보를 인스펙터 창에서 확인할 수 없는데 간혹 객체의 data의 변화를 확인해야 하거나 Prefab or Object를 넣어 주어야 할 경우가 생길 수 있다. 이때 직렬화를 통해 인스펙터 창에서 오브젝트의 정보를 확인할 수 있다.)
3. script reloading
script를 외부 editor로 수정을 하고 reload를 하면 unity editor에서도 수정한 내용이 그대로 적용이 되는데 script에 있는 data 자체도 serialization 돼서 저장되기 때문이다. (unity editor에서 edit - preferences -general에서 auto refresh가 default로 체크되어 있을 텐데 이를 통해 스크립트를 수정하면 바로 refresh가 됨)
그 외에도
4. Prefabs
5. instantiation
6. Resources folder
(Unity에서도 resources folder는 사용하지 말라고 권장한다. 이유야 여러 가지인데 가장 큰 이유는 당장 이 폴더에 들어가 있는 에셋들을 사용하지 않음에도 불구하고 메모리에 올라가기 때문에 (처음 어플이 실행 시 resources 폴더에 있는 내용들을 읽어드림) 앱의 시작 시간이 느려짐 (앱 시작 시 검정 화면 뜨는 시간이 길어짐) -> test 할 때 정도 사용하기에는 적절함 => assetbundle, addressable을 적극 권장)
등이 모두 직렬화의 내용들이다.
https://www.youtube.com/watch?v=Lx61ZEKEvnQ&t=104s
영상 앞부분의 내용을 간단히 정리한 내용입니다.
'Unity > 개념 및 분석' 카테고리의 다른 글
Unity JSON 기본 개념 + 사용[JsonUtility + JSON .NET For Unity(newtonsoft.json) + LitJson + MiniJson] 아는 거 다 써버려 (0) | 2021.06.25 |
---|---|
Unity FlowCanvas(in paradoxnotion) Visual Scripting (0) | 2021.06.16 |
Unity Bolt(비주얼 스크립팅) 기본개념 (0) | 2021.06.15 |
Unity Addressable Asset System 기본 개념 (2) | 2021.06.04 |
Unity AssetBundle 기본 개념 (1) | 2021.04.26 |