Unity学习笔记:Unity中使用tolua(不完全,部分有问题)

60 篇文章 2 订阅
6 篇文章 0 订阅

Unity中调用LUA:

优先导入tolua资源包,只能是5.6.5以上版本。

LuaState lua = new LuaState() 定义并创建一个LUA脚本的虚拟机

LuaState.Start() 开启虚拟机

LuaState.AddSearchPath(string) 传入一个路径添加路径下的LUA脚本但不执行,调用DoFile或Reqire后直接传入脚本名.lua执行(二者有别)

LuaState.DoFile(string) 参数为LUA脚本的路径,将路径下的内容导入并保存近变量中(从盘到.lua)

LuaState.Reqire(string)参数为路径,效果与DoFile相同,区别是第二次调用时会返回第一次创建的LUA对象

LuaState.DoString(string,string) 传入两个参数,第一个参数是脚本中的语句,可以自己编写,大多数情况用IO导入LUA文件中的内容,第二个参数代表名字,可以任意起名,不传入第二个参数时名字为默认

LuaState[string] 通过索引找到变量的名字并返回LUA脚本中的变量(可以找到表中的变量,可以通过传入LUA中没有的变量并赋值当做创建)

LuaFunction luaFunc = LuaState.GetFinction(string) 获取LUA脚本中的一个方法并赋值给变量(这个方法同样适用于获得表中的方法,传入参数的方式为"表.方法")

luaFunc.Call() 执行保存于自身的无参数无返回值的方法

返回类型 a = luaFunc.Invoke<参数一类型,参数二类型,返回值类型>(参数一内容,参数二内容)   执行LunFunc代表的函数,泛型的前几个参数为方法需要的参数的类型,最后一个值为返回值类型,括号中为参数的具体值

------------------------------------

以下三个方法用于自己写执行方法时

func.BeginPCall();
func.Push(需要的参数);
func.PCall();

int = func.CheckNumber(); 获取返回值中的int
string = func.CheckString(); 获取返回值的string
bool = func.CheckBoolean(); 获取返回值中的bool

func.EndPCall();
------------------------------------

LuaTable table = LuaState.GetTable(string) 参数为表的名字,返回一个LUA中保存的表

LuaTable[int或string] 可以传入索引来获取索引位置的值,或者传入string来获得变量,也可以传入没有的变量来创建。

LuaTable table = LuaTable.AddTable(string) 在表中添加一个新表并获得,参数为表的名字

LuaBinder.Bind(LuaState);注册,使LUA中可以调用Unity方法
looper=gameObject.AddComponent<LuaLooper>();
looper.luaState = LuaState;
用Unity模拟LUA协同程序,调用这三句逻辑并执行开启协程的方法.(先创建和Start,然后加入这个,然后再用DoString或DoFile)

执行LUA自身的协程时,需要一个方法来开启协程并返回一个包含该协程的变量

LuaThread = LuaFunction.Invoke<LuaThrad>();
执行协程并获取方法返回的协程变量对他进行操作
LuaThread.Resume(10);等待10秒(毫秒?)


LuaThread.Dispose() 销毁协同

LuaThread = null 回收垃圾

LuaTable.Dispose () 销毁表

LuaTable = null 回收垃圾

LuaFunction.Dispose()销毁创建的方法

LuaFunction = null 回收垃圾
 
LuaState.Collect() 清空资源方法之一

LuaState.CheckTop() 清理栈空间

LuaState.Dispose() 清理内存空间

LuaState = null 等待自动清理垃圾

PS:以上三个需要同时写在代码末尾,因为LUA无法自动释放空间

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值