c#和lua的交互,简单来说,可以分为两个方面。
1.c#调用lua,通过封装好的dll库,c#通过api加载执行lua代码。
2.lua调用c#. c#将自己的函数暴露给lua,lua通过注册的名称调用c#代码。
在unity里,由于有大量的c#代码,所以一般都用现成的类库,我将要使用的是tolua.以及对应的框架。
tolua作为一个成熟框架,已经帮我们做了大量的工作,但为了更好的使用它,我们还是需要了解一下他的基本原理。
首先它的菜单含有大量的gen xxx按钮,这些就是将unity里面的c#类,函数,成员暴露给lua的工具。你可以执行Gen All来暴露所有的接口。
也可以只执行特定类型暴露。
如果你有自己要暴露的第三方类,那么可以自己在CustomSettting里面进行添加。
具体如下:
Lua/Gen Lua Wrap Files c#类
Lua/Gen Lua Delegates C#委托,这里需要注意的是,在c#类里面使用的委托都会被自动暴露,不需要在这个部分额外添加。
Lua/Gen LuaBinder File 根据上面的文件生成最终的luaBind文件。至此,所有的接口都已经暴露给lua层。
当然,如果你想要全部从0开始,那么以上的步骤其实已经够了。但如果你想要用一些常用的工具类,那么lua_framework已经提供了。
我打算利用这些巨人的产物。那么可以继续做以下的几步工作。
Lua/Copy Lua files to Resources,将所有的lua工具类拷贝到Resrouce lua文件夹下面。
Lua/Copy Lua files to Persistent,将所有的lua工具类拷贝到下载目录。
Lua/Build Lua files to Resources (PC) luajit (我发现路径不对,自己修改了部分代码,不知道是不是两个作者没有协调好引起的)
Lua/Build Lua files to Persistent (PC) 同上
Lua/Build bundle files not jit 将lua代码打包成ab
Lua/Build Luajit bundle files (PC) 将lua代码打包成ab (jit版本)
Lua/Clear all Lua files 将c#里面的基本数据类型暴露给lua
至此,我们理解了它的准备工作。