#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!