C# 从Firebase数据库检索数据并在unity上保存数据时出现问题
我使用以下代码从使用Unity3D的用户的Firebase数据库中检索数据,在我们的示例中,我获得了用户级别: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
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”。如果在卸载或安装新手机后安装应用程序,我所要做的就是恢复用户数据。。为什么这么复杂,或者我遗漏了一些东西。好的,用你的方法让它工作,希望有更简单的东西,谢谢!