목록serialization (3)
Coding Memo
BitConverter는 .NET에서 제공하는 API로 기본 primitive 타입들의 데이터를 바이트 배열(byte[])로 직렬화하거나 바이트 배열을 역직렬화하는 기능을 제공한다. 제공되는 Primitive Types - Boolean - Char - Double - Int16 (short) - Int32 (int) - int64 (long) - Single (float) - UInt16 (ushort) - UInt32 (uint) - UInt64 (ulong) Note: float형이 Single로 된다는 것을 유의하자. 아래 문서에 자세히 나와 있다. https://learn.microsoft.com/ko-kr/dotnet/api/system.bitconverter?view=net-8.0 BitCo..
구글에서 제공하는 프로토버퍼를 이용해 서버와 클라이언트간 패킷을 주고받는 시나리오를 계획했다. 서버와 클라이언트 간 전송 시에는 byte[]라는 배열로 주고 받게 되는데, 이 배열을 다시 어떤 객체로 파싱하는 과정이 필요하다. CustomBuffer (직접 직렬화한 버퍼)를 사용하였을 때는 버퍼의 헤더를 추가하여, 버퍼의 맨앞에 2바이트 타입을 추가하고 그 값으로 전체 패킷의 길이를 넣었고 두번째 2바이트 값으로 해당 패킷의 원래 객체 타입을 정의해서 넣었었다. 아래의 구조와 같이 직렬화하는 버퍼를 CustomBuffer라고 하겠다. 파싱할 때는, 처음 2바이트를 읽어서 단위 패킷의 범위를 정한다. 그 다음으로 2바이트를 읽어서 Body에 있는 데이터를 어떤 객체로 역직렬화할 건지 알아낸다. 마지막으로,..
Unity에서 GameObject에 Component(MonoBehaviour)를 추가 하면 ‘Inspector’에 관련 내용이 표시가 된다. 위 이미지에서는 Transform과 SpriteRenderer가 Component로 붙어있고, 각 컴포넌트에 에디터에서 직접 편집하고 수정할 수 있는 값들이 나타나 있다. 이 값들은 흔히 우리가 MonoBehaviour에서 [SerializeField]태그가 붙거나 public으로 선언한 필드가 있으면 자동으로 Inspector에 나타나게 된다. 이 값들을 (태그에서 알 수 있듯이) SerializedProperty라고 하고 이것을 가지고 있는 객체를 SerializedObject라고 한다. 말 그대로 직렬화 되어서 우리가 유니티 에디터에서 다루기 쉽도록 바꾼 것..