美文网首页Unity
Unity 2018 配置 Protobuf Buffers 详

Unity 2018 配置 Protobuf Buffers 详

作者: 东熊 | 来源:发表于2019-08-03 01:16 被阅读0次

配置Proto编译环境

  1. 新建一个.Net Core应用,安装 NuGet 程序包:Google.Protobuf.Tools


  2. 找到程序包路径


  3. 该路径下的tools文件夹中有各系统可用的protoc编译文件


  4. 将相应系统的路径添加到系统变量Path中,方便接下来的使用,这里是
    [C:\Users\LANQ\.nuget\packages\google.protobuf.tools\3.8.0\tools\windows_x64]


  5. 在命令行中进行测试[protoc --version]


  6. 编写简单的proto文件,储存为D:\DStudio\Proto\proto\Test.proto,详细规则可见大佬的翻译
    黄海佳-Proto3 语言指南
syntax = "proto3";

message Test {
 int32 id = 1;
 string name = 2;
}
  1. 使用protoc进行编译
    基本的规则是:protoc -I=[proto文件路径] --[目标语言]_out=[目标路径] [目标文件名]
protoc -I=proto --csharp_out=cs Test.proto

这里的文件夹路径如图,编译时名称匹配即可


  1. 新建一个Unity项目,将生成的cs文件拖入Unity项目中



    因为还没导入Protocol的库文件,所以会有一些报错


导入Protocol库文件

  1. 在Core程序中安装 NuGet 程序包:Google.Protobuf


  2. 找到程序包路径,在该路径的lib文件夹下,有编译好的库文件,Unity(新版)可用的是net45的


  3. 将Google.Protobuf.dll拖入Unity中,这时候已经没有报错了


    image.png

proto3常用API

  • 将结构体序列化为字符数组
        Test test = new Test //Test的数据结构跟刚刚在proto文件中定义的一致
        {
            Id = 0,
            Name = "LANQ"
        };
        byte[] datas;
        using (MemoryStream stream = new MemoryStream())
        {
            test.WriteTo(stream);
            datas = stream.ToArray();
        }

或者

        Test test = new Test
        {
            Id = 1,
            Name = "LANQ"
        };
        byte[] datas = test.ToByteArray();
  • 将字符数组反序列化为结构体
        Test test1 = Test.Parser.ParseFrom(datas);
        Debug.Log(test1.ToString()); //串行化为Json然后输出

参考资料

  1. 黄海佳-Proto3 语言指南
  2. Protocol Buffers官方文档

相关文章

网友评论

    本文标题:Unity 2018 配置 Protobuf Buffers 详

    本文链接:https://www.haomeiwen.com/subject/vlsddctx.html