XLua Coroutine协程

1.将XLua的util文件 放在自己的项目当中,在require 它

XLua中的位置

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

2.在Lua层 封装XLua的 Corrutine 功能,代码如下

coroutine_cs={
    
    }
--协程 利用了lua的 coroutine.wrap 创建协程 coroutine.yield挂起协程 coroutine.resume	重启协程

local util = require ('3rd/xlua/util')
--Main是挂载在GameObjet的继承Mono的脚本 永不销毁 
local cor_runner = GameObject.Find('GameManager'):GetComponent('Main')

--开启协程 
function coroutine_cs.start(...)
	local action=util.cs_generator(...)
	local cor=cor_runner:StartCoroutine(action)	
	return cor
end

--挂起
function coroutine_cs.wait(seconds)
	coroutine.yield(WaitForSeconds(seconds)) --调起Unity 挂起若干秒
end

--停止协程
function coroutine_cs.stop(cor)
	if(cor)then
		cor_runner:StopCoroutine(cor)
	end
end

return coroutine_cs

3.使用例子

	require	('Common/Coroutine_CS') --封装代码的脚本
	
	local a = coroutine_cs.start(function()
		print('coroutine a started')
		coroutine_cs.wait(10)
		print('stop coroutine a after 10 seconds')
	end)
	
	local b = coroutine_cs.start(function()
		print('coroutine b started')
		coroutine_cs.wait(3)
		coroutine_cs.stop(a) --停止协程a  可以注释 看停止协程是否生效
		print('stop coroutine b after 3 seconds')
	end)

猜你喜欢

转载自blog.csdn.net/baidu_39447417/article/details/106438375