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

XLua Coroutine协程

[复制链接]
发表于 2021-8-14 19:22 | 显示全部楼层 |阅读模式
1.将XLua的util文件 放在自己的项目当中,在require 它

XLua中的位置


移动到你项目的自定义的位置



2.在Lua层 封装XLua的 Corrutine 功能,代码如下
  1. coroutine_cs={}--协程 利用了lua的 coroutine.wrap 创建协程 coroutine.yield挂起协程 coroutine.resume        重启协程
  2. local util = require ('3rd/xlua/util')--Main是挂载在GameObjet的继承Mono的脚本 永不销毁
  3. local cor_runner = GameObject.Find('GameManager'):GetComponent('Main')--开启协程
  4. function coroutine_cs.start(...)
  5.         local action=util.cs_generator(...)
  6.         local cor=cor_runner:StartCoroutine(action)return cor
  7. end
  8. --挂起
  9. function coroutine_cs.wait(seconds)
  10.         coroutine.yield(WaitForSeconds(seconds))--调起Unity 挂起若干秒
  11. end
  12. --停止协程
  13. function coroutine_cs.stop(cor)if(cor)then
  14.                 cor_runner:StopCoroutine(cor)
  15.         end
  16. end
  17. return coroutine_cs
复制代码
3.使用例子
  1.         require        ('Common/Coroutine_CS')--封装代码的脚本
  2.        
  3.         local a = coroutine_cs.start(function()print('coroutine a started')
  4.                 coroutine_cs.wait(10)print('stop coroutine a after 10 seconds')
  5.         end)
  6.        
  7.         local b = coroutine_cs.start(function()print('coroutine b started')
  8.                 coroutine_cs.wait(3)
  9.                 coroutine_cs.stop(a)--停止协程a  可以注释 看停止协程是否生效
  10.                 print('stop coroutine b after 3 seconds')
  11.         end)
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-24 11:51 , Processed in 0.101482 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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