Как сделать разблокировку уровней и подсветку уже пройденных. Unity
Пытаюсь сделать хоть что то похожее на игру и хочу сделать несколько уровней.
В этом меню можно выбрать уровень.
Я хочу чтобы до прохождения первого уровня нельзя было попасть на второй, а также подсветку кнопки выбора уровня другим цветом, если он уже был пройден.
Как это можно сделать?
Ответы (3 шт):
Создайте статичную переменную:
public static int MaxFinishedLevel = 0
после прохождения каждого уровня проверяйте:
if (thisLevel > MaxFinishedLevel) {
MaxFinishedLevel = thisLevel
}
тем самым в переменной будет храниться самый больший пройденный уровень. А затем в меню при создании кнопки вы просто проверяете текст кнопки, и если он меньше наибольшего пройденного уровня, ставьте ее серой, а иначе - зеленой:
x = Instantiate(Prefab, position, rotation)
if (x >= MaxFinishedLevel) {
x.GetComponent<Renderer>().mayerial.color = Color.green
}
Для другого цвета можешь просто создать другой спрайт или перекрасить этот, а при открытии этого меню каждый раз проверять какие уровни доступны, а какие нет. На доступный пусть ставится эта текстурка, а на закрытый - другая. Я говорю как, конкретно можно посмотреть "в интернетах".
Для запрета на открытие недоступных уровней ничего сложного не нужно. Создайте переменную количества открытых уровней и при попытке открытия оного проверяйте, меньше ли число нужного или нет. В общем:
В коде действия при нажатии проверяем, меньше или равно (<= в C#, Python и большинстве других языков) это число, чем число уровня. True - открываем уровень, False - не открываем.
На сцену разместите замки(закрыто), а в старте делайте их неактивными.
Сохраняйте с помощью класса PlayerPrefs.
Например, при прохождении уровня сохраняйте:
PlayerPrefs.SetInt("level", PlayerPrefs.GetInt("level", 0) + 1);
А при заходе в меню(Start()):
int level = PlayerPrefs.GetInt("level", 0);
for(int i = 0; i < level; i++){
//делайте что-нибудь с массивом спрайтов
}
