Как включить панель пользовательского интерфейса с помощью gameObject.SetActive (true)? - PullRequest
2 голосов
/ 04 мая 2019

извинения за вопрос супер-новичка. Я пытаюсь создать симулятор рынка в Unity C #, где вы можете покупать / продавать предметы, используя заранее установленную сумму денег.

Я использую оператор if / then, где, если у пользователя недостаточно средств, но он пытается что-то купить, панель пользовательского интерфейса с предупреждением включается с помощью gameObject.SetActive (true). Я знаю, что оповещение срабатывает, потому что в консоли говорится так, но панель интерфейса не активируется. Тем не менее, когда я использую тот же код для «отключения» панели пользовательского интерфейса с помощью (gameObject.SetActive (false), она работает отлично.


public GameObject objectToError;
// the above line allows me to choose which object I'm disabling.

    public void
    BuyGE()
    {
        if (GE.Bank > GE.price)
        {
            GE.Amount++;
            GE.Bank -= (int)GE.price;
        }

// this part adds the item to your inventory, and removes the respective
// amount of cash from your bank.

        else 
        {
            Debug.Log("turn on that panel");
            gameObject.SetActive(true);
// if you don't have enough cash, this alert triggers a UI panel by making it active.
// This is where I have the problem.
        }

    }

Ответы [ 2 ]

3 голосов
/ 04 мая 2019

Мне кажется, что вы ссылаетесь не на тот объект. В строке должно быть что-то вроде:

objectToError.SetActive (истина);

в противном случае gameObject указывает на игровой объект со сценарием, который, вероятно, не будет активным в этом случае.

0 голосов
/ 04 мая 2019

Ваш код может быть улучшен.

Новая функция BuyGE:

BuyGE()
{
    if (GE.Bank > GE.price)
    {
        GE.Amount++;
        GE.Bank -= (int)GE.price;
    }

    objectToError.SetActive(GE.Bank > GE.price);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...