Доброго времени суток.
Имеются некоторые улучшения, каждый из которых в свою очередь имеет 5-10 уровней. Как сделать так, чтобы при покупке первого уровня он деактивировался, а второй становился доступным для приобретения?
Как вариант, можно в одно место установить, скажем, кнопки с разным уровнем, и по нажатию на каждую из них скрывать купленную и делать активной другую. Думаю, можно как-то грамотнее через массивы? :)
Храните где-нибудь текущее количество купленных улучшений данного типа :)
Например, у вас будет массив 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();
}
Когда улучшения закончатся - все кнопки будут неактивны :)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей