#unity3d
#unity3d
Вопрос:
У меня есть вызов моей базы данных Firebase, которая извлекает данные из проигрывателя, а затем отправляет эти данные объекту. (В этом объекте есть список, содержащий оружие).
За исключением того, что в другом файле я вызываю функцию для извлечения оружия из списка. Этот параметр пуст, когда игра начинается, потому что значение then еще не пройдено.
Я решил проблему, установив для переменной isReady значение true при передаче then, и я ввел void Update() для вызова функции в списке.
Я не думаю, что это правильное решение, и должно быть лучшее, у вас есть идея? Я начинаю с единства
Вот этот код :
Этот метод будет выполнять поиск в списке.
public void DisplayIfOwned()
{
if (GameObject.Find("PlayerManager").GetComponent<GetDataSoldier>().soldier.weaponsList.Contains(id)) weapon.SetActive(true);
else weapon.SetActive(false);
}
Этот метод вызывает api для извлечения проигрывателя.
public void FillSoldierData()
{
RestClient.Get<Soldier>("https://minisoldiers-fdd66.firebaseio.com/Soldiers/" SoldierCreation.soldierName ".json")
.Then(response =>
{
soldier = response;
UpdateSoldier();
isReady = true;
});
}
Ответ №1:
Вы действительно должны предоставить более четкую информацию, мне нужно было сделать предположения о том, как именно вы что-то делали. Не стесняйтесь добавлять больше фрагментов кода, это очень полезно 🙂
Если мои предположения верны, то почему бы просто не вызвать DisplayIfOwned
метод непосредственно внутри Then(...
? Вы сказали, что делаете это в Update
, поэтому у вас наверняка есть ссылка на уровне класса, которая имеет доступ к этому методу.
Если это сделано каким-то другим способом, то это может быть то, что вы хотите: Действие
Комментарии:
1. Я уже пробовал, я должен запустить его в статическом режиме, но затем я получаю ошибки, например, идентификаторы классов недоступны и т.д…. Но да, самым простым способом было бы вызвать этот метод вне класса