GeekCoders

[Unity] Unity에서의 Proto Buffer 사용 본문

Client/Unity

[Unity] Unity에서의 Proto Buffer 사용

령호 2015. 1. 21. 22:36

Google Protobuf .Net 은 아래 링크에서 받을 수 있다.

https://code.google.com/p/protobuf-net/downloads/detail?name=protobuf-net%20r668.zip


# 요약기능

1. 버퍼압축

2. 메세지에 required, optional, repeated 속성부여

3. 코드 제네레이션



# 준비과정

1. 다운받은 파일에서 protobuf-net.dll을 유니티의 Asset/plugins 폴더에 넣는다.

2. Protogen을 이용하여 코드를 얻는다.

 - Protogen 사용법

------------

2-1. 다운받은 폴더안에 Protogen이라는 폴더를 연다.

protogen.exe가 소스코드를 제네레이션 하는 실행파일이다.

이 프로그램에 명령어를 전달해서 코드를 제네레이션 해야한다. 우리는 그 마저도 간편하게 하기위해 batch 파일을 생성해본다.


2-2. 아래 내용으로 proto-auto.bat을 작성한다.

protogen.exe -i:sample.proto -o:sample.cs


2-3. sample.proto를 작성한다.

message packet

{

required int64 n = 1;

}


2-4. proto-auto.bat 파일을 실행하면 sample.cs 파일이 생성된다.

------------

3. 얻은 코드를 Asset/Script폴더에 넣는다.



# 사용방법


// serialize
sample.packet req = new sample.packet();
req.n = 1;

System.IO.MemoryStream reqStream = new System.IO.MemoryStream();
ProtoBuf.Serializer.Serialize<sample.packet>(reqStream, req);

byte[] buffer = reqStream.GetBuffer();


// deserialize
System.IO.MemoryStream resStream = new System.IO.MemoryStream(buffer);
sample.packet res = ProtoBuf.Serializer.Deserialize<sample.packet>(resStream);