Protobuf Interigation in unity3d + Editor window to generate C# source code from protobuf files
- Place proto-buf folder at root level in asset folder
- Open ProtoBuf Editor Window Tools->ProtoBuf
- Set field in Editor window and you are good to go, click Generate C# source code from Proto code button
Drag proto files in green area
messagePlayer{requiredstringid=1;requiredint32health=2;repeatedItem items =4;}messageItem{requiredstringitem_id=1;requiredstringname=3;requiredstringdescription=4;optionalstring catalog_name =5;optionalstring catalog_image_url =6;optionalstring item_image_url =7;requireddoubleprice=9;}import "models.proto";messageClientMessage{requiredClientMessageTypetype=22;optionalLoginUserRequest login_user_request =3;optionalAttackRequest attack_request =4;}enumClientMessageType{LOGIN_USER_REQUEST=1;ATTACK_REQUEST=2;}messageLoginUserRequest{requiredstringuser_name=1;requiredstringhashed_password=2;}messageAttackRequest{requiredint32damage=1;requiredstringtarget_id=2;}import "models.proto";messageServerMessage{optionalServerMessageType type =24;//responsesoptionalLoginUserResponse login_user_response =1;optionalAttackResponse attack_response =2;}enumServerMessageType{LOGIN_USER_RESPONSE=1;ATTACK_RESPONSE=2;}messageLoginUserResponse{requiredint32metadata_version=1;requiredint32game_version=2;}messageAttackResponse{requiredstringplayer_id=1;requiredstringtarget_id=2;requiredfloattarget_hp_after_attack=3;}privatevoidLoginRequest(){// client side codevarmsg=ClientMessage.CreateBuilder().LoginUserRequest.ToBuilder().SetUserName("test user").SetHashedPassword("123456789").Build();ClientMessagebuilder=ClientMessage.CreateBuilder().SetLoginUserRequest(msg).SetType(ClientMessageType.LOGIN_USER_REQUEST).Build();// now login msg is ready to send over network to server (seralize)varloginBytes=builder.ToByteArray();// deseralizevarloginObject=ClientMessage.ParseFrom(loginBytes);Debug.Log(loginObject.Type);Debug.Log(loginObject.LoginUserRequest.UserName);}privatevoidLoginResponse(){varmsg=ServerMessage.CreateBuilder().LoginUserResponse.ToBuilder().SetMetadataVersion(1).SetGameVersion(1).Build();ServerMessageloginResponseBuilder=ServerMessage.CreateBuilder().SetLoginUserResponse(msg).SetType(ServerMessageType.LOGIN_USER_RESPONSE).Build();// seralizevarloginRes=loginResponseBuilder.ToByteArray();// de-seralizevarserverMsgReceived=ServerMessage.ParseFrom(loginRes);Debug.Log(serverMsgReceived.Type);Debug.Log(serverMsgReceived.LoginUserResponse.GameVersion);}