【发布时间】:2018-12-02 18:25:54
【问题描述】:
我正在统一开发一款游戏,但遇到了一个我无法解决的问题。 我通过标准 WWW 对象连接到 Web 服务器并使用协程执行 POST 请求。
代码本身可以工作,但我需要更新变量值并在协程完成后返回该变量,我无法做到。
public int POST(string username, string passw)
{
WWWForm form = new WWWForm();
form.AddField("usr", username);
form.AddField("pass", passw);
WWW www = new WWW(url, form);
StartCoroutine(WaitForRequest(www));
//problem is here !
return success_fail;
}
private IEnumerator WaitForRequest(WWW www)
{
yield return www;
if (www.error == null)
{
if(www.text.Contains("user exists"))
{
success_fail = 2;
}
else
{
success_fail=1;
}
} else {
success_fail=0;
}
}
协程用相关值更新 'success_fail' 的值。 但是'return success_fail;' POST 方法中的行在协程完成之前运行,这会导致它返回一个 false 值。
我尝试使用额外的协程但没有成功,假设我在那里也有错误。 如何仅在协程完成后返回“success_fail”值?
谢谢。
【问题讨论】:
-
如果你调用另一个协程,它会等到那个协程完成。 answers.unity3d.com/questions/276055/…
-
您混淆了同步和异步代码。也许回调函数会有用?您可以使用
Action<T>委托,其中T是您想要“返回”的任何类型。