|
记录一下,代码及注释如下,具体使用还需加工,需要单独写类去管理- local util = require 'xlua.util' --xlua封装好的工具类,路径xlua/Resources/xlua/util.lua.txt
- local go = CS.UnityEngine.GameObject("corGo") --创建对象,不需要new关键字
- local coroutineCom = go:AddComponent(typeof(CS.CoroutineMine)) --空脚本,无逻辑代码,只是用来启动协程,注意C#定义的类前要加“CS.”
- local startCoroutine = function (func,...) --定义启动协程的方法,参数一为方法,参数二为运行参数一方法的参数
- return coroutineCom:StartCoroutine(util.cs_generator(func,...)) -- util中定义好的函数
- end
- startCoroutine(function () --启动协程
- print("0s")
- coroutine.yield(CS.UnityEngine.WaitForSeconds(1)) -- 使用unity的WaitForSeconds等待1s
- print("1s")
- local i = 0
- local waitUntil = CS.UnityEngine.WaitUntil(function ()-- 创建unity的WaitUntil
- return i>=3
- end)
- startCoroutine(function () --启动另一个协程,修改变量i的值
- for index = 1, 3, 1 do
- i = i +1
- print(i)
- coroutine.yield( CS.UnityEngine.WaitForSeconds(1) )
- coroutine.yield(nil) --相当于 yield return null
- end
- end)
- coroutine.yield(waitUntil) --使用unity的WaitUntil等待判断条件成立
- coroutine.yield( startCoroutine(function () --启动另一个协程,并等待协程完成
- for index = 1, 3, 1 do
- coroutine.yield( CS.UnityEngine.WaitForSeconds(1) )
- end
- end) )
- print("True")
- end)
复制代码 |
|