Unity3D protobuf-net使用方式

1、下载protobuf-net

 

2、创建Unity工程,创建一个Plugins文件夹,将protobuf-net解压把里面得protobuf-net放到Plugins

 

3、创建一个名为mcs的文本文件,里面写上-unsafe

 

4、重启Unity

 

5、编译自动生成cs代码工具

 

protogen.exe就是刚才生成的

 

 

6、编写.proto文件

 

message.proto里写入

1

2

3

4

5

6

7

8

9

10

message TeamCharacterOne

{

    required    uint64              CharacterId             = 1;

    required    string              CharacterName           = 2;

    required    int32               RoleId                  = 3;

    required    int32               Level                   = 4;

    required    int32               Ladder                  = 5;

    required    int32               FightPoint              = 6;

    optional    int32               QueueResult             = 7;   

}

  

7、 生成.cs代码

创建一个proto.bat文件文件

里面写入

@echo off  
rem 查找文件  
for /f "delims=" %%i in ('dir /b ".\*.proto"') do echo %%i  
rem 转cpp  for /f "delims=" %%i in ('dir /b/a "*.proto"') do protoc -I=. --cpp_out=. %%i  
for /f "delims=" %%i in ('dir /b/a "*.proto"') do protogen -i:%%i -o:%%~ni.cs  
pause

 

8、把代码放入Unity工程

using message;

using System.Collections;

using System.Collections.Generic;

using System.IO;

using UnityEngine;



public class NewBehaviourScript : MonoBehaviour {



    // Use this for initialization

    void Start () {

        var a = new TeamCharacterOne();

        a.CharacterId = 10;

        a.CharacterName = "fdsafd";

        var b = Serialize(a);



        var data = Deserialize<TeamCharacterOne>(b);

        Debug.Log(data.CharacterName);

    }

     

    // Update is called once per frame

    void Update () {

         

    }



    byte[] Serialize(object o)

    {

        using (MemoryStream ms = new MemoryStream())

        {

            ProtoBuf.Serializer.Serialize(ms, o);

            byte[] result = new byte[ms.Length];

            ms.Position = 0;

            ms.Read(result, 0, result.Length);



            return result;

        }

    }



    T Deserialize<T>(byte[] b)

    {

        using (MemoryStream ms = new MemoryStream())

        {

            ms.Write(b, 0, b.Length);

            ms.Position = 0;

            return ProtoBuf.Serializer.Deserialize<T>(ms);

        }

    }

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: b'unity protobuf-net' 是指在 Unity 引擎中使用 protobuf-net 库进行数据序列化和反序列化的操作。protobuf-net 是一种高效、跨平台的二进制序列化格式,可以将数据对象转换成二进制数据流,方便进行网络传输和存储。在 Unity使用 protobuf-net 可以提高数据传输和存储的效率,同时也可以提高游戏的性能。 ### 回答2: Unityprotobuf-net是两个不同的技术,但它们可以结合使用Unity是一款流行的游戏引擎,可以用来制作2D和3D游戏。它提供了许多游戏开发所需的功能和工具,例如渲染引擎、物理引擎、动画系统和网络功能等。Unity还可以在多个平台上运行,包括PC、移动设备和虚拟现实头显等。 Protobuf-net是一个开源的C#库,用于序列化和反序列化数据。它可以将对象序列化为二进制数据,并将其保存到文件或通过网络传输。另外,protobuf-net还可以将二进制数据反序列化为对象。protobuf-net的优点是序列化和反序列化速度非常快,并且生成的二进制数据量小,适合于网络传输。 在Unity中,我们可以使用protobuf-net来序列化和反序列化游戏对象。这种方法可以提高游戏的性能和效率,因为protobuf-net生成的二进制数据比其他格式(例如JSON)要更小,并且可以更快地发送到其他玩家或服务器。此外,protobuf-net还可以将数据序列化为可序列化的二进制文件,以供使用。 总结来说,Unityprotobuf-net都是非常有用的技术,结合使用可以提高游戏的性能和可扩展性。如果您正在进行Unity游戏开发并且需要高效的网络传输和数据交换方式,请考虑使用protobuf-net来处理游戏数据。 ### 回答3: Unity是一个强大的游戏引擎,它提供了许多工具和技术来帮助游戏开发者快速开发和部署游戏应用程序。Protobuf-net是一个基于Google的Protocol Buffers协议的.NET库,它能够在Unity中帮助处理序列化和反序列化问题。 Protobuf-net是一个非常流行的序列化和反序列化库,它使用了一种高效、紧凑的二进制格式,能够在数据传输和存储中实现高效率和高速度。在Unity项目中使用Protobuf-net可以帮助减少网络传输和存储的负担,提升游戏的性能和响应速度。 在Unity使用Protobuf-net,需要安装相应的库和扩展组件。安装完成后,可以使用C#语言来进行序列化和反序列化操作。Protobuf-net能够兼容多种平台和操作系统,包括Windows、Linux、Mac OS等,同时也能够支持多种数据类型和格式,例如JSON、XML等。 总之,利用UnityProtobuf-net的组合可以帮助提升游戏的性能和响应速度,从而提高游戏玩家的体验。但是,在使用Protobuf-net时,需要注意一些细节,例如数据类型的转换、版本的兼容性等问题,以确保数据的安全和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值