Unity/개념 및 분석

Unity Serialization(직렬화)

최애뎡 2021. 5. 13. 17:51
728x90
반응형

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

영상 앞부분의 내용을 간단히 정리한 내용입니다.

반응형