1.Unity学习笔记--基础2.Unity学习笔记--入门3.Unity学习笔记--数据持久化之PlayerPrefs的使用4.Unity学习笔记--数据持久化XML文件(1)5.Unity学习笔记--数据持久化XML文件(2)6.Unity学习笔记--数据持久化Json7.NGUI学习笔记(1)8.NGUI学习笔记29.NGUI学习笔记3.510.NGUI学习笔记4.011.Unity 热更--AssetBundle学习笔记 0.712.Unity 热更--AssetBundle学习笔记 0.813.Unity 热更--AssetBundle学习笔记 1.0【AB包资源加载工具类的实现】14.[2]自定义Lua解析方式15.Unity热更学习toLua使用--[1]toLua的导入和默认加载执行lua脚本16.自定义Lua解析器管理器-------演化脚本V0.517.使用自定义委托来调用Lua中的多返回值和长参数类型函数18.使用自定义lua解析管理器调用lua脚本中的table
19.Lua热更学习--使用toLua中的协程
[6] C#访问调table类中的成员变量和函数
访问table中的变量和函数
lua中可以使用table作为class,因此对table中的函数访问调用是必要的根据前面对table访问和function的获取调用,这里尝试获取调用。
依然是如此,此种调用方式获取到的table中的函数是引用拷贝。
Main.lua脚本新增内容
CStudent = { _name = "TonyChang", _id = "202499990101", _sex = "male", CStudent = function() print("table中的函数") end }
测试脚本中的调用内容:
//--------------------------------获取类类型table LuaTable CStudent = CallLuaManager.Instance().LuaState.GetTable("CStudent"); //执行构造函数 CStudent.GetLuaFunction("CStudent").Call("TonyChang","男"); //打印结果 Debug.Log(CStudent["_name"]+" ," + CStudent["_id"] +" ," +CStudent["_sex"]);
使用toLua中的协程
lua中不支持协程,使用toLua中提供的协程方式来使用协程。
在使用协程之前,需要在管理类中添加LuaLooper组件,并将其LuaState与外部使用执行的LuaState虚拟机绑定。
LuaLooper luaLooper = gameObject.AddComponent(); // Debug.Log(gameObject.name); luaLooper.luaState = _luaState;
Main.lua中的协程:
--使用toLua中提供的协程 --制作计时器 function Timer() local t = 1 while t < 20 do t = t + 1 coroutine.wait(1) print(t) end StopTimer() end local coroutlineTimer = nil function StartTimer() print("run") --开始协程时候传入类型为函数 coroutlineTimer = coroutine.start(Timer) end function StopTimer() --传入要结束的协程 coroutine.stop(coroutlineTimer) end
我们在C#测试脚本中开启协程:
//----------------------------------开始计时器 LuaFunction startTimer = CallLuaManager.Instance().LuaState.GetFunction("StartTimer"); startTimer.Call(); startTimer.Dispose();
当然也可以传入参数设置计时时长: