关于LUA+Unity开发_toLua篇【一】

tolua各个实例,

Helloworld,介绍了LuaState的生成,DoString以执行文件,Dispose来销毁。注意销毁前调用了CheckTop,用于检测LUA栈中是否还有未执行的指令。
ScriptsFromFile, 流程来说,首先生成一个虚拟机,再指定工作路径后,读取LUA文件内容来执行,使用DoFile和Require功能。
CallLuaFunction,较xLua来说就提供了多种形式了。这里简单说明一下:
1.使用比较原始的方式,根据LUA的核心机制,使用pCALL指令将数据放LUA执行栈中,再从栈中取出。 luaFunc.Invoke就是对此的封装
2.使用 luaFunc.ToDelegate 直接创建一个函数委托句柄。
3. 使用LUA虚拟机对象里的Invoke来实现调用,实现机制基本与1一样
AccessingLuaVariables,这里涉及LUA很实用的setmetatable函数,在脚本里首先生成了一个元表,再利用以下几种形式测试:
1.使用LUASTATE虚拟机对象来直接取varTable中的内容。分别出了table数据和一个function数据并转为LuaFunction类型后直接可以进行调用。
2.取成一个LuaTable对象以访问其成员值,由于定义了metatable,可以使用其创建一个元表的实例来访问,以可以直接获取metatable原型访问数据。
TestCoroutine,使用LUA的协程,使用于C#的协程类似,使用coroutine.start启动一个函数,coroutine.stop来停止协程函数,其中使用的coroutine.wait,coroutine.step在lua官方文档中可以查阅。
TestCoroutine2,桥接C#的协程,效率很低,不推荐。
TestLuaThread, lua的coroutine映射到C#中tolua的封装成luathread对象,resume来控制Lua中线程的运行。
AccessingArray,传递一个数据给Lua,在Lua做遍历读取
UseDictionary,字典的封装,这里需要将字典的类反射到Lua中。
AccessingEnum,枚举的使用,基于C#反射过去的类来操作。
11_Delegate,这里实现将LUA中的普通函数转化成C#中可用的Delegate,这样可以实现如C#中按钮绑定某个LUA函数作为事件。
12_GameObject,使用Unity内置相关的操作一个gameobject对象,这里不同的插件性能有区分,具网上的一些大佬统计效率,toLua在此方面表现是最好的。
13_CustomLoader,自定义的一个LUA加载器,继承LuaClient类后,可以重写StartMain函数,以实现在界面运行时就执行一段Lua脚本。注意,这里使用的OnLoadFinished回调,因此会在awake和start前面,场景一加载进来就调用。
14_Out,就是个在LUA中简单使用物理射线的例子。
15_ProtoBuffer,使用ProtoBuffer的传输协议来与做为数据载体,此例中在LUA中也做实体进行解析处理。
16_Int64,LUA5.3的新特性,默认是double处理数据,使用Int64可处理78962871035984074- 9223372036854775807范围的数据,此例使用lua的int64来处理。
17_Inherit,使用LUA的.Extend 的形式扩展LUA对象操作。
18_Bundle,使用WWW加载作为Assetbundle的lua文件。
19_cjson,CJSON插件的使用。
20_utf8,UTF8编码支持。
21_String,LUA桥接C#字符串的操作。当然这里全用LUA自己的字符串也是可以的。
22_Reflection,LUA中桥接C#的反射机制。
23_List,LUA桥接C#的数组容器。
24_Struct,关于C#中结构体如何桥接到LUA的示例。
Performance,测试一些常用操作的消耗。
TestErrorStack,TestOverload,操作栈测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值