lua——Unity配合Rider使用xlua驱动lua
xlua
xLua为Unity、 .Net、 Mono等C#环境增加Lua脚本编程的能力,借助xLua,这些Lua代码可以方便的和C#相互调用。
xLua的突破
xLua在功能、性能、易用性都有不少突破,这几方面分别最具代表性的是:
- 可以运行时把C#实现(方法,操作符,属性,事件等等)替换成lua实现;
- 出色的GC优化,自定义struct,枚举在Lua和C#间传递无C# gc alloc;
- 编辑器下无需生成代码,开发更轻量;
配置
去github网站上直接下载项目,不是发布版本
https://github.com/Tencent/xLua
将xlua加入到项目中

压缩包中的Asses文件夹下的内容直接鼠标拖动加入到Unity工程中,在此之前要保证Assets文件夹下不存在同名文件夹,不然运行的时候会直接报错
Rider配置
2024通过官网下载到的最新版的rider,具体的安装注册请移步去百度,直接跳过到安装插件,EmmyLua,如下图所示。
最新的版本会自动配置对.lua和.lua.txt的识别
提示
插件中对.lua.txt的使用是因为Unity不能识别.lua
不过一开始对.lua.txt中的高亮文字识别会失败,需要先删除再重新配置
Unity运行
require运行
路径配置
运行的时候xlua会自动扫描配置的文件夹,在Unity中,最直接的是建议脚本放在Resources文件夹下作为一开始的测试手段
C#调用
创建LuaManager的C#文件,并附加在在场景中的一个游戏对象,会在Sart函数中自动调用lua中配置的方法
1 | using System; |
lua文件准备
提示
插件中对.lua.txt的使用是因为在Unity的Resources文件夹下可以识别的文件数量有限,不指定Loader的话就需要用 .txt 进行结尾
MainLua:调用LuaTEST
LuaTEST:具体实现

MainLua
1 | require("LuaTest") |
LuaTEST
1 | print("LuaTEST") |
最终的效果是在Unity的控制台输出 LuaTEST的字样
自定义Loader
在指定的C#文件中按照如下方式进行定义
需要在执行 require 方法之先指定Loader
1 | private void Start() |
涉及到的类型为
1 | public delegate byte[] CustomLoader(ref string filepath); |
程序位置定位
打包后也能通过该复合获取到游戏的路径,不过在驱动lua运行的没有正确加载,具体原因子啊2024.12.10暂且不清楚
1 | Application.dataPath |