【发布时间】:2018-09-01 02:30:51
【问题描述】:
我正在用 Unity 实现一个使用 firebase 服务的小游戏。 Firebase RealtimeDataBase 有一点问题。 我有一个方法“UpdateScoreAsync”,这个方法将新玩家的记录发布到数据库中。现在我用这样的代码调用这个方法:
await UpdateScoreAsync();
LoadScene("ReloadActualScene"); // It starts the game again.
效果很好,但是就像您在代码中看到的那样,新场景会在乐谱完全更新时加载。我的目标是在分数更新时加载新场景,但如果我只是在场景重新加载时删除“等待”游戏中断。我看到我的设备日志(Android),我认为问题是这样的:
本机线程在没有调用 DetachCurrentThread 的情况下退出(也许它会使用 pthread_key_create 析构函数?)(等等)
UpdateScoreAsync 方法的对象是一个单例,在重新加载场景时不会破坏。虽然游戏破解,但分数在数据库中更新!
我目前的方法“UpdateScoreAsync”是这样的:
public async Task UpdateScoreAsync(string userId, int newScore)
{
Debug.Log("Actualizando puntuación en la base de datos...");
await FirebaseDatabase.DefaultInstance.GetReference("string").Child("string").Child("Score").SetValueAsync(newScore).ContinueWith(task => {
if (task.IsFaulted) {
...
} else if (task.IsCanceled) {
...
} else if (task.IsCompleted) {
Debug.Log("Score updated");
...
}
});
}
我尝试像这样改变这种方法:
public void UpdateScoreAsync(string userId, int newScore)
{
Debug.Log("Actualizando puntuación en la base de datos...");
FirebaseDatabase.DefaultInstance.GetReference("string").Child("string").Child("Score").SetValueAsync(newScore).ContinueWith(task => {
if (task.IsFaulted) {
...
} else if (task.IsCanceled) {
...
} else if (task.IsCompleted) {
Debug.Log("Score updated");
...
}
});
}
以及对该方法的调用:
UpdateScoreAsync();
LoadScene("ReloadActualScene");
有了这个新代码,我得到了我之前解释过的错误。谁能帮帮我??不知道哪里出错了。
提前致谢!
【问题讨论】:
标签: c# firebase unity3d firebase-realtime-database async-await