- 要准备的工具
- cmake 3的版本
- vs2017 15版本或更高
- 下载xLua 源代码 https://github.com/Tencent/xLua.git
- 其中的build文件夹解压至Unity项目的根目录下
- 下载第三方库的源码 解压至build文件夹
- 修改build里面的CMakeLists.txt
- 在mark_as_advanced下面添加扩展
#begin lua-xxx
set (XXX_SRC xxx/xxxx.c)
set_property(
SOURCE ${XXX_SRC}
APPEND
PROPERTY COMPILE_DEFINITIONS
LUA_LIB
)
set (THIRDPART_SRC ${THIRDPART_SRC} ${XXX_SRC})
#end lua-xxx
这里的xxx为Lua包名
以lfs:luafilesystem为例
#begin lua-lfs set (LFS_SRC luafilesystem/src/lfs.c) set_property( SOURCE ${LFS_SRC} APPEND PROPERTY COMPILE_DEFINITIONS LUA_LIB ) set (THIRDPART_SRC ${THIRDPART_SRC} ${LFS_SRC}) #end lua-lfs
- 安装VS2017 15版本进行编译处理或者修改bat内容
- Downloads - Visual Studio Subscriptions Portal 安装comunity版本
- 或者修改bat内容 改为当前拥有的 vs版本
- 把make_win64_lua53.bat文件里面的 cmake -G “Visual Studio 14 2015 Win64” .. 这一行修改成 cmake -G “Visual Studio 11 2012 Win64”
- 确保已安装了CMake Download | CMake
- 根据平台和lua的版本进行make安装
- make_win64_lua53.bat双击编译安装
- 打开plugin_lua53/Plugins/x86_64/xlua.dll覆盖掉项目Assets/Plugins/x86_64/xlua.dll
- 编译完成后
- 在xlua下找到LuaDLL.cs
-
#if UNITY_IPHONE && !UNITY_EDITOR const string LUADLL = "__Internal"; #else const string LUADLL = "xlua"; #endif
在上面代码下添加引进新的模块
-
[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)] public static extern int luaopen_模块名(System.IntPtr L); [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))] public static int Load模块名(System.IntPtr L) { return luaopen_模块名(L); }
例子 lfs
[DllImport(LUADLL, CallingConvention = CallingConvention.Cdecl)] public static extern int luaopen_lfs(System.IntPtr L); [MonoPInvokeCallback(typeof(LuaDLL.lua_CSFunction))] public static int LoadLfs(System.IntPtr L) { return luaopen_lfs(L); }
- 在LuaEnv.cs的文件下找到
- AddBuildin(XXX,XXXX)
- 添加 AddBuildin("引入包名", LuaDLL.Lua.Load模块名);
- 引入包名:require "包名"
LuaEnv.cs:
AddBuildin("lfs", LuaDLL.Lua.LoadLfs);
- 在Lua代码中即可使用
- local a = require “包名”