Lesson11_Lua调用C#_Call Coroutine

--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中的方法转换一下
posted @ 2024-02-29 21:49  波奇型蠢驴  阅读(10)  评论(0)    收藏  举报