C# 从Firebase数据库检索数据并在unity上保存数据时出现问题

C# 从Firebase数据库检索数据并在unity上保存数据时出现问题,c#,firebase,unity3d,firebase-realtime-database,C#,Firebase,Unity3d,Firebase Realtime Database,我使用以下代码从使用Unity3D的用户的Firebase数据库中检索数据,在我们的示例中,我获得了用户级别: FirebaseDatabase.DefaultInstance .GetReference("users").Child(userID) .GetValueAsync().ContinueWith(task => { if (task.IsFaulted) { Debug.LogError("Error re

我使用以下代码从使用Unity3D的用户的Firebase数据库中检索数据,在我们的示例中,我获得了用户级别:

 FirebaseDatabase.DefaultInstance
   .GetReference("users").Child(userID)
   .GetValueAsync().ContinueWith(task =>
   {
       if (task.IsFaulted)
       {
           Debug.LogError("Error retriving user data: " + userID);
         // Handle the error...
       }
       else if (task.IsCompleted)
       {
           DataSnapshot snapshot = task.Result;
           int TempUserLevel = (int)snapshot.Child("Level").Value; 
          //this get's an error 
           PlayerPrefs.SetInt(_UserLevel, TempUserLevel);

       }
   }
错误:

只能从主线程调用TrySetInt。建设者和 当 加载一个场景

据我所知,任务是一个新的线程,而不是统一的主线程。仍然
我似乎无法在unity上本地保存值,或从任务中获取值。

无法调用它,因为continue with是一个委托,它等待响应。我所做的只是在调用此委托之前进行waituntil协程,使用并设置一个bool,例如someboolcheck=false

else if(task.IsCompleted)
    {
     // your operation
     check=true;

    }
    ////////
IEnumerator myRoutine()
  {
         yield return new WaitUntil ( () => check );
         // set your playerprefs.

  }

实际上,您可以将“ContinueWith”更改为“ContinueWithOnMainThread”。

如果在卸载或安装新手机后安装应用程序,我所要做的就是恢复用户数据。。为什么这么复杂,或者我遗漏了一些东西。好的,用你的方法让它工作,希望有更简单的东西,谢谢!