使用Unity3D在Parse上创建帐户

时间:2015-06-20 16:12:17

标签: c# parse-platform 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等待它失败,因为它无法在内部产生 试试看。
  • 即使我试着赶上Unity,也会抱怨LoadLevel 无法从主线程中调用。
  • 我尝试传递回调。到ContinueWith呼叫,但仍然 抱怨从主线程调用Load。

所以它归结为我无法弄清楚如何在不禁用所有Unity功能的情况下等待任务完成。

我应该如何创建一个解析帐户并在完成后收到通知然后再次调用Unity函数?

1 个答案:

答案 0 :(得分:1)

对于这种情况,你可以像这样产生你的任务:

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");