在XLua里如何使用协程?有两种方式
使用Unity协程
要想通过unity的StartCoroutine使用协程,需要传入IEnumerator参数
Xlua提供了util.cs_generator来生成IEnumerator
util是xlua的一个工具,require即可local util = require 'xlua.util'
这样我们可以用StartCoroutine开启,StopCoroutine停止协程,协程内部使用coroutine.yield
local util = require 'xlua.util'
local co
local t_fun = util.cs_generator(function()
print("StartCoroutine ")
for i = 1, 10 do
coroutine.yield(CS.UnityEngine.WaitForSeconds(1))
print('Wait for 1 seconds')
if i == 3 then
print("StopCoroutine")
print(co)
self:StopCoroutine(co)
end
end
end)
co = CS.XLua.Cast.IEnumerator(t_fun)
self:StartCoroutine(co)
测试后发现,util.cs_generator生成的其实也是一个table,并不是IEnumerator,解决办法