SO공부하다가 직렬화 얘기나와서
잠깐 직렬화 공부하다가 지금 몇시간이 지난건지 모르겠는데
내가 빡통이라 그런가 이해가 된건지 안된건지 모르겠다
이해한거 설명해보자면
초보들은 직렬화를 인스펙터에 public이 아닌 변수를 띄우게하는 기능이라고만 이해하지만
사실 직렬화는 데이터 구조나 오브젝트 상태를 unity에디터가 저장하고 나중에 재구성할 수 있는 포맷으로 자동으로 변환하는 프로세스
쉽게말해 세이브파일을 만든다는 개념
이 세이브파일을 만드는 이유는 타 기기간 원활한 전송을 위한 것도 있고
프로그램을 열었을 때 이 세이브파일을 값을 바탕으로 씬이나
게임오브젝트나 에셋을 재구성하기 때문
인스펙터에서 직렬화된 필드를 볼수있는건 유니티에서 부가적으로 지원하는 기능때문이지
이게 직렬화의 핵심개념은 아닌것 그러나 유용함
직렬화를 사용하는 이유는 다른 기기 or 다른 시간대에서 우리가 저장했던 정보(씬, 게임오브젝트, 에셋)를 그대로 구현할 수 있는
설정 값을 저장하는 파일을 만들기 위함
유니티는 씬이나 프리팹에 대한 직렬화 데이터 저장 시 YAML을 사용
맞게 이해한거임?
진짜 정신나갈것같애
갠적으로 이 라인이 코딩재능 나뉘는 듯
유니티 시리얼라이즈 필드랑 프로그래밍 직렬화는 그냥 분리해서 생각하셈 동명이인 같은 거임.
@ㅇㅇ 고마우이
뭔가 복잡하게 써놨지만 결국 요약하면 '인스펙터에 실시간으로 데이터 바꾸면서 테스트하기 좋은 기능' 외에 다른 설명은 없어보이는데. 말인즉슨 님이 핵심기능이 아니지만 유용하다고 적어놓은 '인스펙터에 띄우기' 가 정확히 핵심기능인걸로 보이고. 직렬화 자체는 그냥 단어 그대로 '직렬로 나열' 임. 한줄로 쭉 데이터를 쓰고, 그거 읽는법 기입하고. 그걸 반대로 읽는법대로 데이터를 읽는게 역직렬화고. "그냥 유니티 인스펙터에 띄워서 비프로그래머들 테스트하기 좋으라고 쓰는 기능" 외 다른걸 알아야할 필요는 없어보임. 코드보다 우선하기에 코드에서 초기값을 바꿔도 인스펙터에 넣은 값이 불러와져서 종종 헤맬수 있다 정도면 알면 끝
지금 님이 헤매는 이유는 '유니티에서 직렬화의 기능' 과 '직렬화의 프로그래밍적 정의' 를 하나의 맥락으로 동시에 이해하려는 시도 때문으로 보임. 유니티에서 직렬화는 정확히 '인스펙터에 변수조절창 띄우기' 외 다른 이유는 아예 없고, 프로그래밍에서 직렬화는 뭐가 대단한게 아니라 '직렬로 데이터 나열하고 읽는법 기입해서 고대로 다시 읽게 만드는 것' 임. 유니티 내부에서 serializefield 가 구체적으로 뭘해주는건진 우리야 모르지만 대충 인스펙터에 코드보다 우선하는 데이터저장을 해두고 인스펙터에서 그거 조절하면서 테스트할수있게 한다. 이거 외에는 알 수도 없고 알 필요도 없다고 봄
@Indie1(112.218) 고마우
몇시간만에 전문가가되려하다니