tolua官方例子笔记

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的方法都是使用的冒号。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 指令集 lua_capture_error_log lua_use_default_type lua_malloc...
    吃瓜的东阅读 14,140评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,355评论 19 139
  • 今天下午收到亚马逊的书,下午15点左右开读,晚上20点读完。 首先说下亚马逊自售的这本书,325页到332页重复印...
    小剑人阅读 14,409评论 1 3
  • 青年小伙小丁,做家居生意,刚入道时,确实实诚本分,做了多年以后,渐渐的有了些商人的本质,凡事不管对朋友还是陌生人都...
    清风明月照牡丹阅读 3,863评论 2 2
  • 成都的湖是静的,宛如明镜一般,清晰地映射出天空的蓝;成都的湖是活的,层层鳞浪随风而起,伴着即将到来的细雨,在跳跃...
    504宝贝儿们阅读 2,571评论 0 0