xlua使用unity协程笔记

记录一下,代码及注释如下,具体使用还需加工,需要单独写类去管理

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值