Проблема получения данных из базы данных Firebase и сохранения данных о единстве - PullRequest
0 голосов
/ 08 октября 2018

Я использую следующий код для извлечения данных из базы данных Firebase для пользователя с Unity3D, в нашем случае я получаю Уровень пользователя:

 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.Тем не менее я не могу сохранить значения локально на единицу или получить значение из ЗАДАЧИ.

1 Ответ

0 голосов
/ 08 октября 2018

Он не может быть вызван, потому что продолжить с является делегатом, и он ждет ответа.Что я сделал, так это просто сделал waituntil сопрограмму перед вызовом этого делегата с использованием и установил bool, например, некоторые bool check = false.

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

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

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...