tolua git地址 这里面也有一些说明
在开始需要实例出一个LuaState的对,对应的构造方法中就是初始化加载lua组件。然后调用Start方法。
直接在cs中编写lua,使用LuaState中的DoString方法。
LuaState.DoFile("Lua文件名")这里只需要设置文件名,在这之前需要设置搜索文件路径,也就是用LuaState.AddSearchPath("路径")把文件对应的路径添加进去。
LuaState.GetFunction("指定方法")调用lua中的方法。
cs调用lua中的变量直接使用LuaState["变量名"],设置这个变量值需要在加载lua文件之前设置,获得lua文件中的变量是在加载之后。
这里面的Coroutine协同程序中的coroutine.wait,需要先对LuaLooper中的luaState进行赋值,当然这个LuaLooper也是需要添加到游戏物体上的。在LuaClent中有对LuaLooper初始化封装的方法,在游戏加载时直接调用即可。
LuaLooper会在c#每一帧驱动lua的协同完成所有的协同功能,这里的协同已经不单单是lua自身功能,而是tolua#模拟unity的所有的功能。
这里也好像可以在lua中用unity中的协同,但是需要做一些初始化,使用LuaClient来初始化即可。
cs中调用lua中方法传入值使用Function.Push(传入值)
lua中使用迭代,array:GetEnumerator与array:MoveNext,这里是用的的冒号,数组转化成table使用的array:ToTable
lua中使用cs传入的字典,使用迭代遍历,跟数组一样。
lua中使用cs中的枚举,使用枚举.ToInt()转化为int来作比较。也可以使用枚举.IntToEnum(数字)来转化为枚举。当然这里如果需要用自己定义的枚举,需要生成相应的Wrap文件才可以使用。
在lua中使用cs中委托,需要生成相应声明委托的Wrap文件,然后就可以调用了。按键的事件可以用这个。
Lua访问GameObject,新建local go = GameObject('go'),使用AddComponent值得注意的是使用冒号。
Lua中访问cs中带out的函数,比如射线碰撞的调用方式,在lua中需要out的参数直接填写nil参数,然后它会在返回值hit中返回就是out参数了。
lua中解析json需要require "cjson",然后直接使用json.decode(json字符串)
lua中使用list,其中使用list的方法都是使用的冒号。