第一章.编译lua-protobuf支持库(Windows插件-Win10编译)
第二章.Unity & lua-protobuf 环境配置
第三章.二进制proto读取功能,与,lua-protobuf注意事项简介说明
第四章.编译lua-protobuf支持库(Android插件-Win10编译)
第五章.编译lua-protobuf支持库(Android插件-Mac10.13.6编译)
第六章.编译lua-protobuf支持库(IOS插件-Mac10.13.6编译)
一,Unity配置lua-protobuf支持设置
1,打开自己新建的Unity工程D:\lua_proto\Assets\XLua\Src\LuaDLL.cs文件
大概41行

  public partial class Lua{#if (UNITY_IPHONE || UNITY_TVOS || UNITY_WEBGL || UNITY_SWITCH) && !UNITY_EDITORconst string LUADLL = "__Internal";
#elseconst string LUADLL = "xlua";
#endif

以上代码下面复子粘贴,以下代码

    //LUA支持PROTOBUF[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]public static extern int luaopen_protobuf_c(System.IntPtr L);[MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]public static int LoadProtobufC(System.IntPtr L){return luaopen_protobuf_c(L);}[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)]public static extern int luaopen_pb(System.IntPtr L);[MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))]public static int LoadPb(System.IntPtr L){return luaopen_pb(L);}

2,打开自己新建的Unity工程D:\lua_proto\Assets\XLua\Src\LuaEnv.cs文件
大概118行

#if (!UNITY_SWITCH && !UNITY_WEBGL) || UNITY_EDITORAddBuildin("socket.core", StaticLuaCallbacks.LoadSocketCore);AddBuildin("socket", StaticLuaCallbacks.LoadSocketCore);
#endif

以上代码下面复子粘贴,以下代码

AddBuildin("pb", XLua.LuaDLL.Lua.LoadPb);

3,也可以luaEnv初始化的时候设置

LuaEnv luaenv = new LuaEnv();
luaenv.AddBuildin("pb", XLua.LuaDLL.Lua.LoadLuaProfobuf);

4,复子D:\build_xlua_with_libs\build\lua-protobuf\protoc.lua文件,粘贴到D:\lua_proto\Assets\lua目录里

二,编写测试用到的C#代码,LUA代码,Proto代码
1,新建一个D:\lua_proto\Assets\Lua_proto.cs C#代码

using System.IO;
using UnityEngine;
using XLua;namespace LuaProto
{[CSharpCallLua]public class Lua_proto : MonoBehaviour{public LuaEnv env = null;private void Start(){env = new LuaEnv();env.AddLoader(CustomMyLoader);env.DoString("require 'lua_proto.lua'");}public string LoadProtoBufFile(string fileName){string luaPath = Application.dataPath + "/lua/" + fileName;string strLuaContent = File.ReadAllText(luaPath);return strLuaContent;}private byte[] CustomMyLoader(ref string fileName){byte[] byArrayReturn = null; string luaPath = Application.dataPath + "/lua/" + fileName + "";string strLuaContent = File.ReadAllText(luaPath);byArrayReturn = System.Text.Encoding.UTF8.GetBytes(strLuaContent);return byArrayReturn;}void OnDestroy(){env.Dispose();}}
}

2,新建一个D:\lua_proto\Assets\lua\lua_proto.lua lua代码

local luaproto=CS.LuaProto.Lua_proto
local pb = require "pb"
local protoc = require "protoc.lua"
local p=protoc.new()
local protoStringprotoString=luaproto:LoadProtoBufFile("ectype.proto")
p:load(protoString,"ectype.proto")
print(pb.enum("ECtype",2))
print(pb.enum("ECtype","eUnameLoginReq"))protoString=luaproto:LoadProtoBufFile("login3b.proto")
assert(p:load(protoString,"login3b.proto"))protoString=luaproto:LoadProtoBufFile("login3a.proto")
assert(p:load(protoString,"login3a.proto"))local data =
{name = 'ilse',age  = 18,contacts ={{ name = 'alice', phonenumber = 12312341234 },{ name = 'bob',   phonenumber = 45645674567 }}
}local bytes = assert(pb.encode('Person', data))
print(pb.tohex(bytes))local data2 = assert(pb.decode('Person', bytes))
print(data2.name)
print(data2.age)
print(data2.address)
print(data2.contacts[1].name)
print(data2.contacts[1].phonenumber)
print(data2.contacts[2].name)
print(data2.contacts[2].phonenumber)

3,新建三个proto文件
D:\lua_proto\Assets\lua\ectype.proto

syntax = "proto3";
enum ECtype
{INVALIDITY_Ctype = 0;eUnameLoginReq = 1;eUnameLoginRes = 2;
}

D:\lua_proto\Assets\lua\login3b.proto

syntax = "proto3"; message Phone
{string name        = 1;int64  phonenumber = 2;
}

D:\lua_proto\Assets\lua\login3a.proto

syntax = "proto3";
import public "login3b.proto";
message Person
{string name     = 1;int32  age      = 2;string address  = 3;repeated Phone  contacts = 4;
}

三,运行Unity测试

打印以上图片内容,不出错,就算是,成功读取proto文件了.

Unity & lua-protobuf 环境配置完

第一章.编译lua-protobuf支持库(Windows插件-Win10编译)
第二章.Unity & lua-protobuf 环境配置
第三章.二进制proto读取功能,与,lua-protobuf注意事项简介说明
第四章.编译lua-protobuf支持库(Android插件-Win10编译)
第五章.编译lua-protobuf支持库(Android插件-Mac10.13.6编译)
第六章.编译lua-protobuf支持库(IOS插件-Mac10.13.6编译)

lua-protobuf 新手入门篇-第二章.Unity lua-protobuf 环境配置相关推荐

  1. 大白话聊框架设计(入门篇) | 第二章:规则匹配Mapping实现

    文章目录 **1.规则匹配Mapping实现** **2.重构ActionMapper** **2.1 改造前** **2.2 改造后** **3.创建一个Mapping** **4.创建一个WebC ...

  2. 明解C语言(入门篇)第二章

    2-1 编写一段程序,像后面那样读取两个整数,然后显示出前者是后者的百分之几 #include<stdio.h>int main(void) { int x, y;printf(" ...

  3. 第三篇第二章室内外消防给水系统

    2019/1/4 [录播]2018一消精华班-实务-一级消防工程师-环球网校 http://v.edu24ol.com/?type=lesson&id=178934&gid=16157 ...

  4. 计算机与交换机基础配置入门,新手入门篇:交换机配置窍门深入学习 -电脑资料...

    新手入门篇:交换机配置技巧深入学习,关于交换机配置技巧的问题,涉及到的东西比较多, 交换机配置技巧一直以来是非常神秘的,不仅对于一般用户,对于绝大多数网管人员来说也是如此,同时也是作为网管水平高低衡量 ...

  5. 【 linux系统入门管理篇-第二章文件和用户的管理】

    linux系统入门管理篇-第二章文件和用户的管理 本章介绍 一.文件管理 (一).Linux目录结构 (二).文件管理 1.文件管理命令 2.文件类型 二.用户管理 (一).用户/组基本概念 (二). ...

  6. 尚硅谷Java入门视频教程第二章——Java基本语法

    尚硅谷Java入门视频教程第二章 第一章复习 课后习题 Java语言概述 第2章:Java基本语法 2.1 关键字和保留字 2.2 标识符(Identifier) 2.3 变量 2.3.1 变量基本概 ...

  7. 第一篇第二章火灾的基础知识

    沿外墙面蔓延的情况 需要注意:层高要足够高 要不下层着火会直接蔓延到上层 喷头系统必须在轰然之前进行灭火 否则灭火失败 2019/1/3 [录播]2018一消精华班-实务-一级消防工程师-环球网校 h ...

  8. 微型计算机发展方向网络化,第二章 会计电算化工作环境

    第二章会计电算化工作环境 第一节计算机基本知识 本节要点 ◆计算机的发展历史 ◆计算机的特点 ◆计算机的分类 ◆计算机的应用领域 ◆计算机中的数据和编码 主要内容 计算机又叫电脑,英文名称是Compu ...

  9. PMP备考指南之第二章:项目运作环境

    本文已同步至 GitHub/Gitee/公众号,感兴趣的同学帮忙点波关注~ 第二章:项目运作环境 1. 事业环境因素.组织过程资产 事业环境因素 Enterprise Environmental Fa ...

最新文章

  1. C# Email邮件发送,功能是密码找回或者重置功能。
  2. MATLAB   xls数据读写
  3. Java:Java的输入类Scanner
  4. 虚基类(c++细节篇七)
  5. 全栈工程师之路(二)—— JavaScript(网页前端脚本语言)
  6. ElasticSearch第二天
  7. 《Python Cookbook 3rd》笔记(5.17):将字节写入文本文件
  8. CPU VS GPU笔记
  9. 行人重识别的挑战与最新进展(35页PPT整理)
  10. 微信小程序onReachBottom不触发
  11. 使用Keras-yolov3来识别滑动验证码
  12. 送给佳佳同学的礼物:测试流程及并行测试介绍
  13. 手机没网了,却还能支付,这是什么原理?
  14. 变形金刚2影院版完整字幕
  15. 实现多线程的方法到底有1种还是2种还是4种?
  16. 怎么在计算机关闭文件夹隐藏,电脑文件夹名、文件夹怎么隐藏?
  17. 在chrome中设置禁止访问的网站
  18. KubeSphere 内置的 Prometheus 通过 remote write 至 Thanos 存更长期数据
  19. SpringBoot学习+秒杀项目
  20. 数字信号与图像处理实验一:信号处理基础

热门文章

  1. matlab创建一个函数,matlab定义一个新函数
  2. matlab定义函数多输入,matlab .m文件中定义多个函数
  3. Winform的高DPI问题
  4. 大胆预测:它将成为5G最核心干将
  5. Java poi 操作word替换模版中固定参数(页眉、段落、表格)
  6. Android开发杂草园
  7. 专业学习的认识与思考
  8. 基于HTML电商项目的设计与实现—— HTML+CSS+JavaScrip家具网页设计实例 企业网站制作
  9. http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html
  10. 佛与蜘蛛的故事(转载)