Элементы массивов в Unity

145
12 января 2019, 04:50

Доброго времени суток.

Имеются некоторые улучшения, каждый из которых в свою очередь имеет 5-10 уровней. Как сделать так, чтобы при покупке первого уровня он деактивировался, а второй становился доступным для приобретения?

Как вариант, можно в одно место установить, скажем, кнопки с разным уровнем, и по нажатию на каждую из них скрывать купленную и делать активной другую. Думаю, можно как-то грамотнее через массивы? :)

Answer 1

Храните где-нибудь текущее количество купленных улучшений данного типа :)
Например, у вас будет массив Upgrade[] из n элементов и переменная _curentUpgrade, которая хранит количество купленных улучшений. Тогда следующий цикл прохода по доступным кнопкам сделает то, что вам нужно:

    Button[] _buttons;
    int _curentUpgradeLevel;
    void UpdateInteractable()
    {
        int count = _buttons.Length;
        for (int i = 0; i < count; i++)
        {
            var button = _buttons[i];
            button.interactable = i == _curentUpgradeLevel;
        }
    }

Пока улучшений не было - активна только кнопка с индексом 0 - т.е. первая в списке. При покупке вызывайте что-то вроде:

    void BuyUpgrade()
    {
        _curentUpgradeLevel++;
        UpdateInteractable();
    }

Когда улучшения закончатся - все кнопки будут неактивны :)

READ ALSO
Как узнать, что в 1С произошла ошибка?

Как узнать, что в 1С произошла ошибка?

Мне нужно идентифицировать если произошла ошибка в программе 1сНапример если служба выключена, то 1с выдаст ошибку (определенное окно)

180
Как сделать элемент Datetime с маской

Как сделать элемент Datetime с маской

Как можно сделать элемент DateTime в WPF, так чтобы не надо было вводить вручную точкиС маской какой-то например

150
Редактировать базу, после master-detail

Редактировать базу, после master-detail

такой вопросЕсть две БД, настроил master-detail, то есть это все работает правильно, открывает два DataGridView и при переходе по позициями, происходит...

186
Как сделать чтобы Num_2 не мог быть больше Num_1?

Как сделать чтобы Num_2 не мог быть больше Num_1?

Можете попробовать что-то подобное:

172