找回密码
 立即注册
查看: 345|回复: 0

xlua使用unity协程笔记

[复制链接]
发表于 2021-8-12 20:15 | 显示全部楼层 |阅读模式
记录一下,代码及注释如下,具体使用还需加工,需要单独写类去管理
  1. local util = require 'xlua.util' --xlua封装好的工具类,路径xlua/Resources/xlua/util.lua.txt
  2. local go = CS.UnityEngine.GameObject("corGo") --创建对象,不需要new关键字
  3. local coroutineCom = go:AddComponent(typeof(CS.CoroutineMine)) --空脚本,无逻辑代码,只是用来启动协程,注意C#定义的类前要加“CS.”
  4. local startCoroutine = function (func,...) --定义启动协程的方法,参数一为方法,参数二为运行参数一方法的参数
  5.     return coroutineCom:StartCoroutine(util.cs_generator(func,...)) -- util中定义好的函数
  6. end
  7. startCoroutine(function () --启动协程
  8.     print("0s")
  9.     coroutine.yield(CS.UnityEngine.WaitForSeconds(1)) -- 使用unity的WaitForSeconds等待1s
  10.     print("1s")
  11.     local i = 0
  12.     local waitUntil = CS.UnityEngine.WaitUntil(function ()-- 创建unity的WaitUntil
  13.         return i>=3
  14.     end)
  15.     startCoroutine(function () --启动另一个协程,修改变量i的值
  16.         for index = 1, 3, 1 do
  17.             i = i +1
  18.             print(i)
  19.             coroutine.yield( CS.UnityEngine.WaitForSeconds(1) )
  20.             coroutine.yield(nil) --相当于 yield return  null
  21.         end
  22.     end)
  23.     coroutine.yield(waitUntil) --使用unity的WaitUntil等待判断条件成立
  24.     coroutine.yield( startCoroutine(function () --启动另一个协程,并等待协程完成
  25.         for index = 1, 3, 1 do
  26.             coroutine.yield( CS.UnityEngine.WaitForSeconds(1) )
  27.         end
  28.     end) )
  29.     print("True")
  30. end)
复制代码
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 09:13 , Processed in 0.086748 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表