一.tolua使用准备工作:从GitHub上下载tolua(说明:这篇笔记使用的Unity版本是2019.4.18f1c1,使用的tolua是2021年4月9日从GitHub上Clone的tolua工程文件,没有下载release版本,使用的ide为vscode)
1.在GitHub上搜索tolua,点击下图搜索结果中选中的项目进入:
2.进入后Clone项目或者下载右边的release发布出来的tolua,这里我选择的是Clone代码:
3.导入tolua,将下载的tolua工程中的相关文件复制到自己的工程中。
将Luajit和Luajit64这两个目录复制。注意:这两个目录复制前和Assets目录同级,复制后也应该和Assets目录同级。
将Assets目录下的所有文件夹复制到自己的工程文件中Assets目录下。
打开Unity,会出现一个选择框,选择左边按钮。
接下来出现自动生成的选择框,点击确定。
成功导入后上方菜单栏出现Lua菜单,如果刚才不小心选择了取消,这里也可以选择Generate All重新生成。
4.其他功能脚本导入,主要是AB包工具(在Unity中通过PackageManager导入AB包工具,导入方法详见:热更新基础--AssetBundle学习笔记)和AB包管理器(为了方便加载AB包,我们可以制作一个AB包的管理器脚本,脚本详见:热更新基础--AssetBundle学习笔记)
二.C#调用lua
1.在C#中使用lua代码,和xlua类似,tolua也有一个解析器类用于执行lua代码
void Start() { //初始化tolua解析器 LuaState state = new LuaState(); //启动解析器 state.Start(); //执行lua代码 state.DoString("print('欢迎来到tolua')"); //执行代码时可以自定义代码出处,方便查看代码问题 state.DoString("print('hello tolua')","CSharpCallLua.cs"); //执行lua文件,执行文件时后缀可加可不加 state.DoFile("Main"); //执行lua文件,不添加文件后缀 state.Require("Main"); //检查解析器栈顶是否为空 state.CheckTop(); //销毁解析器 state.Dispose(); //置空 state = null; }
和xlua对比,解析器的使用方法类似。tolua解析器对象需要Start方法启动后使用,xlua直接使用解析器对象;tolua提供了DoString方法执行单句lua代码、DoFile方法执行lua文件(后缀可选)、Require方法执行lua文件(不加后缀),而xlua只提供了DoString方法执行单句lua代码,要执行lua文件需要使用DoString方法执行lua中的require语句;tolua销毁解析器时必须先执行Ch