UH2S3L9——使用toLua提供的协程
本章代码关键字
1 2 LuaLooper luaLooper.luaState
1 2 3 4 coroutine .start() coroutine .wait() coroutine .stop()
toLua提供的协程
toLua为Lua的协程添加了start
,wait
,stop
函数,使得协程的开启、挂起、停止更加方便了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 local coDelay = nil StartDelay = function () coDelay = coroutine .start(Delay) end Delay = function () local c = 1 while true do coroutine .wait(1 ) print ("Count: " .. c) c = c + 1 if c >= 5 then StopDelay() break end end end StopDelay = function () coroutine .stop(coDelay) end
在Lua中声明完毕后,就可以在C#中调用函数开启协程,前提是完成了 toLua 协程相关的初始化
1 2 3 LuaFunction luaFunction = LuaManager.Instance.LuaState.GetFunction("StartDelay" ) luaFunction.Call(); luaFunction.Dispose();
ToLua使用协程初始化
注意!toLua在使用协程前,必须要在场景上的某个GameObject上加上LuaLooper脚本,并且将目前正在运行的Lua解析器关联起来!
1 2 3 4 5 6 7 luaState = new LuaState(); luaState.Start(); DelegateFactory.Init(); LuaLooper looper = this .gameObject.AddComponent<LuaLooper>(); looper.luaState = luaState;