База данных Firebase 6.16.0 не работает в Unity 2020, но работает в мобильной сборке

#c# #firebase #unity3d #firebase-realtime-database

#c# #firebase #unity3d #firebase-база данных в реальном времени

Вопрос:

Недавно я обновился до Firebase 6.16 sdk из-за ошибки, из-за которой Unity 2020 зависал после нажатия play во второй раз. Обновление исправило эту ошибку.

Однако теперь моя база данных в реальном времени недоступна в редакторе, но она отлично работает в мобильной сборке.

Ошибка, которую я получаю, заключается в том, что «Имя хоста этого URL»https://any_url/2 » отличается от URL -адреса базы данных «https://any_url /. Я передаю ссылку на базу данных для получения значений, и это работает в мобильной сборке. В редакторе, похоже, сравнивается ссылка на базу данных с родительской ссылкой на дерево узлов. Я не понимаю, почему. Это работало в Unity 2020 до обновления до последнего firebase sdk.

Я обращаюсь к узлу базы данных реального времени, которую я передаю в качестве ссылки на базу данных. Я инициализировал экземпляр базы данных firebase по умолчанию с основным заголовком дерева.

Я не могу найти никаких результатов, связанных с этой конкретной ошибкой, поэтому я думаю, что это тоже может быть новым. Это полная ошибка, с которой я сталкиваюсь.

Имя хоста этого URL (https://xyz.firebaseio.com/abc/2 ) отличается от URL-адреса базы данных (https://xyz.firebaseio.com /) UnityEngine.Отладка: ошибка входа (объект)

     private void Start()
    {
        FirebaseApp.DefaultInstance.SetEditorDatabaseUrl(firebaseDatabaseUrl);
    }

    public void SetDatabaseReference(string name)
    {
        _databaseReference = 
        FirebaseDatabase.DefaultInstance.GetReferenceFromUrl(GetDatabaseURL(name));
    }

    public IEnumerator LoadParticularDatabase()
    {
        DataLoaded = false;
        
        _databaseReference.GetValueAsync().ContinueWith(task =>
        {
            GameData loadedData = new GameData();
            RoundData roundData = new RoundData();
            if (task.IsFaulted)
            {
                Debug.Log("Couldn't access");
                return;
            }
            else if (task.IsCompleted)
            {
                Debug.Log("Accessed");
                string dataText = task.Result.GetRawJsonValue();
               
                roundData = JsonUtility.FromJson<RoundData>(dataText);
                loadedData.allRoundData = roundData;
                allRoundData = loadedData.allRoundData;
            }
            DataLoaded = true;
        });
        
        yield return new WaitUntil(() => DataLoaded == true);
        
        yield return DataLoaded;
    }

    private IEnumerator WaitToLoadDB(string dbName)
    {
        DataController.instance.SetDatabaseReference(dbName);
        
        StartCoroutine(DataController.instance.LoadParticularDatabase());
        Debug.Log("Waiting for data to load...");
        yield return new WaitUntil(() => DataController.instance.DataLoaded == true);

        if (DataController.instance.DataLoaded == true)
        {
            dbLoadFinished = true;
        }
    }
  

Комментарии:

1. Работает ли это, если вы удалите SetEditorDatabaseUrl ? (этот вызов больше не нужен)

2. Привет @PatrickMartin Я так и не смог заставить 6.16 работать. К сожалению, для меня ошибка сохранялась. Я не смог протестировать его без этого вызова «SetEditorDatabaseUrl», поскольку я уже понизил рейтинг до 6.15.2, как вы предложили. На данный момент это делает задачу для меня. Спасибо за помощь.

3. Не беспокойтесь, и команда изо всех сил старается выпустить хороший патч 6.16.1!