--Lua 调用 Unity 协程
--我们不能将lua函数直接传入unity的开启协程中,需要xlua的工具
util=require("xlua.util")//固定写法
GameObject= CS.UnityEngine.GameObject
WaitForSeconds=CS.UnityEngine.WaitForSeconds
local obj = GameObject("Coroutine")
local mono = obj:AddComponent(typeof(CS.LuaCallCSharp))//这里只是获得一个继承了Mono的脚本,待会方便去调用Mono里面的StartCoroutine方法启动协程
fun= function ( ) --协程函数
--lua中没有yield return 语法糖,只能用lua中的yield
local a = 1
while true do
coroutine.yield(WaitForSeconds(1))--lua中的协程
print(a)
a=a+1
if a>6 then
mono:StopCoroutine(b)//停止当前协程,为什么能在这里访问到下方声明的b,是因为这里是协程
end
end
end
b = mono:StartCoroutine(util.cs_generator(fun))--需要调用util中的方法转换一下