private void LoginRequest() { // client side code var msg = ClientMessage.CreateBuilder().LoginUserRequest.ToBuilder() .SetUserName("test user") .SetHashedPassword("123456789") .Build(); ClientMessage builder = ClientMessage.CreateBuilder() .SetLoginUserRequest(msg) .SetType(ClientMessageType.LOGIN_USER_REQUEST) .Build(); // now login msg is ready to send over network to server (seralize) var loginBytes = builder.ToByteArray(); // deseralize var loginObject = ClientMessage.ParseFrom(loginBytes); Debug.Log(loginObject.Type); Debug.Log(loginObject.LoginUserRequest.UserName); }