在unity中我们经常会使用协程来实现一些功能,例如Get,Post请求,延时等功能。
我们要在lua中使用协程:首先引用xlua自带的的util文件
local util = require 'xlua.util'
local UnityWebRequest=CS.UnityEngine.Networking.UnityWebRequest
实现及调用:
function TestCoroutine()
return util.cs_generator(function()
for i = 1,10 do
coroutine.yield(CS.UnityEngine.WaitForSeconds(3));
print("runtime i="..i)
end
end
)
end
--调用
function Start()
this.self:StartCoroutine(TestCoroutine());
end
结果:
Get请求,并传入CallBack进行回调获取get得到的数据text
function HttpGet(url,CallBack)
return util.cs_generator(function()
local requestGet = UnityWebRequest.Get(url);
coroutine.yield(requestGet:SendWebRequest());
if(requestGet.isNetworkError or requestGet.isHttpError)then
print("Get接口网络错误"..requestGet.error);
else
CallBack(requestGet.downloadHandler.text);
end
end
)
end
--调用
function start()
local url = "url";
this.self:StartCoroutine(TestCoroutine(url,function(text)
--.............
--对text进行解析
--.............
end));
end