制作一个承载想法的东西(七)—— tolua、xlua引入lua-protobuf,tolua换xlua

  • A+
所属分类:Unity3d 原创文章

在原来写Maniac的时候,为了模拟服务端和客户端的交换,写了个临时的NetManager,模拟发送和接收协议数组,也是是延迟一下触发逻辑,没有经过任何的数据协议处理。所以我就想写个,自个客户端起个socket服务器然后和客户端进行交互了。原来的触发逻辑,哈哈哈:

 

ToLua引入proto3

ToLua中更新protobuf库使用proto3,原来的库用的是proto2。

一、准备工作

  1. tolua_runtime源码 下载
  2. lua_protobuf 下载
  3. 配置好的环境msys2 链接 提取码:6666

 

二、将lua-protobuf的pb.h和pb.c替换tolua_runtime根目录的pb.c

三、打开pb.c替换luaop_pb函数

 

四、编译tolua库

  1. 打开msys2 32编译环境 cd到tolua_runtime位置
  2. ./build_win32.sh 编译win的tolua.dll,目录在Plugins/x86下
  3. 打开编辑android相关的(build_arm.sh、build_x86.sh、link_arm64.bat),把NDK路径改为本电脑路径,我用的版本是android-ndk-r10e-windows-x86_64,然后在msys2 的32位下执行 ./build_arm.sh,执行./build_x86.sh。编译后的tolua.so在Plugins/Android下
  4. arm64的参考上面步骤,使用msys2 64编译环境
  5. os和mac没试,需要MAC系统,没条件的可以搞虚拟机弄弄,用终端直接执行相关脚本。

 

五、库的使用

1.在Unity中找到LuaDLL.cs,找到lua_open_pb位置,替换代码

2.在你创建虚拟机的地方添加打开Lib

3.复制lua-protobuf的protoc.lua和serpent.lua到你的lua脚本目录

 

ToLua更换为Xlua

ToLua中用的luajit用的lua版本是5.1的,有些新的lua特性和方法都无法使用。当时想的是升级一下lua的版本,后面想到有很多人原来用ToLua,后面为了Xlua的Hotfix又加入了Xlua,混合使用。而Xlua的build库里早就有lua5.4了,更新非常积极,而我的项目目前的代码也不算太多,所以就有了换成Xlua的想法和行动。

 

一、创建虚拟机

Tolua是LuaState,Xlua是LuaEnv;Tolua有DoFile,而Xlua需要使用DoString去require先;Tolua可以通过LuaState使用索引的方式获取全局方法,而Xlua的全局在Global里面通过Get的方式获取;Tolua通过OpenLib添加库,Xlua通过AddBuildin添加库;ToLua使用LuaLoop.cs去驱动lua层的Update、FixUpdate,Xlua可以沿用这种方式去驱动;Tolua加载lua文件通过在new LuaResLoader里面定义逻辑,Xlua通过AddLoader传一个方法定义逻辑返回byte数组。

1.ToLua启动脚本

 

2.Xlua启动脚本

 

二、Wrap生成

Xlua中通过特性[LuaCallCSharp]需要导出的内容,然后反射获取需要导出的类型,新建一个静态类放在Editor中,打包后是不需要再用到额,声明一个静态列表,把ToLua中需要导出的类型都添加到里面。这里只列了一点。

最后在lua脚本中,把使用到Cs脚本类型的前面都加上CS.,原来ToLua直接都是命名空间加类名调用额,Xlua的调用方式不一样,前面直接加CS.就行。例如CS.UnityEngine.GameObject。

 

Xlua引入lua-protobuf库

一、准备工作

  1. 下载xlua工程 要用到里面的build 下载
  2. 下载lua-protobuf 下载
  3. 虚拟机环境mac或则linux,我没有编译ios的库

 

二、配置

  1. 把lua-protobuf放到xlua的build文件夹里面
  2. 修改CMakeLists.txt,添加

 

三、编译xlua库

  1. Window

双击make_win_lua54.bat运行,一次成功,没有遇到任何问题,首先我电脑装的是vs2017,该有的库都有了。如果报错,可以根据报错补充环境。dll文件在:

制作一个承载想法的东西(七)—— tolua、xlua引入lua-protobuf,tolua换xlua

 

2.  Android

  • 安装git,我需要下载我的工程文件,sudo apt install git
  • 安装cmake3.6.0或以上版本  百度安装方法,我直接执行了sudo apt install cmake是5.1版本的
  • 下载NDK15版本,配置环境变量,在/etc/profile 最后加入(注意权限问题)

  • 下载工程,在xlua的build目录下,执行./make_android_lua54.sh

 

一般不会出现什么问题,我是cmake版本不对,换版本折腾了一下,也只是权限问题多点。Windows编译反正我是没成功,不建议Windows搞。编译后的so文件在:

制作一个承载想法的东西(七)—— tolua、xlua引入lua-protobuf,tolua换xlua

3.其他平台,没试

 

好了,我可以去写我的网络模块了。

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: