为什么带有yield的方法永远不会执行?永远不会到达Debug.Log o第一个调用方法!
public IEnumerator call(string method,WWWForm postData,Action<string> callback) {
Debug.Log("call");
WWW www = new WWW(this.apiUrl + method,postData);
yield return www;
Debug.Log("www ok");
callback(www.text);
}
public IEnumerator call2(string method,WWWForm postData,Action<string> callback) {
Debug.Log("call2");
return null;
}
public void login(string email,string password,Action<string> callback)
{
Debug.Log("login");
WWWForm form = new WWWForm();
form.AddField("email",email);
form.AddField("password",password);
Debug.Log("->playerLogin");
this.call2("playerLogin", form,callback);
this.call("playerLogin", form,callback);
Debug.Log("<-playerLogin");
}
答案 0 :(得分:1)
您没有访问call()返回的Enumerator,因此yield方法不会被执行。
答案 1 :(得分:1)
屈服是懒洋洋地执行的。这意味着它只会在迭代时实际需要时执行:
var enumerable = this.call("playerLogin", form,callback);
enumerable.GetEnumerator().MoveNext(); // will be executed here