Проблема Unity с вызовом api и установкой данных после него

#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. Я уже пробовал, я должен запустить его в статическом режиме, но затем я получаю ошибки, например, идентификаторы классов недоступны и т.д…. Но да, самым простым способом было бы вызвать этот метод вне класса