1. 직렬화(Serialization)란?
유니티에서 스크립트(Script)의 변수를 Public으로 지정하여 Inspector에서 값을 변경하는 경우가 있다. 그러나 정보를 은닉하고, 캡슐화를 유지하기 위해 private으로 변수를 지정한 경우 Inspector에서 볼 수 없다. 이때 Inspector에서 볼 수 있도록 하는 것이 SerializeField이다. SerializeField는 직렬화를 하겠다는 뜻이다. 그렇다면 여기서 직렬화란 무엇일까?
직렬화는 클래스나 오브젝트 등을 연속된 바이트 형태로 변환하는 과정을 말한다. (쉽게 말하면 전송 가능한 형태로 변환하는 작업이다.) 직렬화를 사용하는 이유는 데이터를 컴퓨터의 저장장치에 저장하거나 네트워크로 전달하기에 편리하기 때문에 사용됩니다. 다시 클래스나 오브젝트로 복원하는 작업을 역직렬화(Deserialization)이라고 합니다.
직렬화 과정에서는 객체의 멤버 변수(member variables)와 프로퍼티(properties)의 값을 바이트 배열로 변환합니다. 객체의 타입 정보도 함께 저장되어, 역직렬화 과정에서 객체의 상태를 복원할 수 있다.
직렬화 과정은 대개 자동으로 처리되지만, 특정 객체의 상태를 직렬화할 때 특정 멤버 변수나 프로퍼티를 제외하고 싶은 경우에는 직접 코드를 작성하여 직렬화 과정을 제어할 수 있습니다. 직렬화는 게임 개발에서 중요한 기술 중 하나입니다. 게임 씬을 저장하고 불러오는 기능, 게임 정보를 네트워크를 통해 전송하는 기능, 게임 정보를 디스크에 저장하는 기능 등에 활용됩니다.