Я реализую небольшую игру с 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");
С этим новым кодом я получаю ошибку, которую я объяснил ранее. Кто-нибудь может мне помочь ?? Я не знаю, где ошибка.
Заранее спасибо!