如何在返回bool的公共函数中正确使用协程回调?

时间:2020-05-16 08:45:33

标签: c# unity3d

我有一个协程设置,可以http发布并使用用户名和密码登录,无论成功与否,返回true或false。我不确定是否应该使用这样的回调,因为在调用回调之前LoginRequest()返回false。我该怎么做呢?

布尔函数

    public bool LoginRequest(string username, string password) 
    {
        bool value = false;
        StartCoroutine(WebServerCredential(true, username, password , returnValue => 
        {
            value = returnValue;
        }));
        return value;
    }

协程

    private IEnumerator WebServerCredential(bool login, string username, string password, System.Action<bool> success=null, string authKey=null) 
    {
       WWWForm form = new WWWForm();
       form.AddField("username", username);
       form.AddField("password", password);
       form.AddField("action", "login");
       UnityWebRequest web = UnityWebRequest.Post(Host, form);

       yield return web.SendWebRequest();

       if (web.downloadHandler.text.StartsWith("TRUE"))
       {
          success(true);
          Debug.Log("Login Successful");
       }
       else 
       {
          Debug.Log("Network - Web - Login: " + web.downloadHandler.text);
          success(false);
       }
    }

0 个答案:

没有答案