簡體   English   中英

使用Unity3D在Parse上創建帳戶

[英]Create account on Parse with Unity3D

我正在嘗試使用Unity的解析API創建一個新帳戶,並遇到各種麻煩。 我要做的就是在解析時創建一個帳戶。 然后成功加載場景。

這是用於創建新帳戶的代碼。

bool success = true;
string error;
try
{
    Task signup = user.SignUpAsync().ContinueWith(t =>
    {
        if (t.IsFaulted || t.IsCanceled)
        {
            success = false;
        }
    });
}
catch (System.Exception e)
{
    error = "Failed to sign up Parse User. Reason: " + e.Message;
    success = false;
}

if(success)
    Application.LoadLevel("ExampleScene");

我不會發布所有嘗試過的東西,因為我嘗試了很多東西。

經常發生的主要問題:

  • 代碼是ASync,因此它根本不等待帳戶創建。
  • 如果我使用IEnumerator等待,它將失敗,因為它無法在try catch中產生。
  • 即使我嘗試了一下,Unity也抱怨無法從主線程調用LoadLevel。
  • 我嘗試傳遞回調。 到ContinueWith調用,但是仍然抱怨從主線程調用Load。

因此,歸結為,我無法弄清楚如何在不禁用所有Unity功能的情況下等待任務完成。

我應該如何創建一個解析帳戶並在完成時獲得通知,然后再次調用Unity函數?

在這種情況下,您可以這樣產生Task:

private IEnumerator SignUpHandler()
{
    bool success = true;
    string error;

    Task signup = user.SignUpAsync();//.ContinueWith(t =>
    while (!signup.IsCompleted) yield return null;
    if (signup.IsFaulted || signup.IsCanceled)
    {
        //Debug.Log("Error " + signup.Exception.Message);
        error = "Failed to sign up Parse User. Reason: " + signup.Exception.Message;
        success = false;
    }
    else
    {
        Debug.Log("Done");
        Application.LoadLevel("ExampleScene");
    }

}

然后從這樣的地方調用您的SignUpHandler: StartCoroutine("SignUpHandler");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM