Как сделать разблокировку следующего уровня по нажатию на UI

Графический интерфейс пользователя

Как сделать разблокировку следующего уровня по нажатию на UI

Сообщение Simba1395 12 июн 2022, 09:58

Здравствуйте, возник вопрос а как сделать разблокировку следующего уровня по кнопке, простая UI кнопка на которой написано завершить задание, и после нажатия происходит разблокировка следующего уровня и переход на главную сцену, я не могу додуматься как это сделать, делаю следующим образом:

Создал отдельную сцену в ней настроил канвас, добавил кнопки уровней, пишу следующий скрипт для того чтобы отслеживать количество кнопок как дочерних элементов, и присваиваю доступным только 1 уровень, все остальное является interactable, данный код:
C#
public static int countUnlockedLevel = 1;
void Start()
{
for (int i = 0; i < transform.childCount; i++)
{
if (i < countUnlockedLevel)
{
#region FirstStateBtn
transform.GetChild(i).GetComponent<Button>().interactable = true;
#endregion
}
else
{
#region SndStateBtn
transform.GetChild(i).GetComponent<Button>().interactable = false;
#endregion
}
}
}
далее пишу скрипт который должен по идее как менять значение countUnlockedLevel, вот данный код:
C#

public void EndQuest()
{
int currentLevel = SceneManager.GetActiveScene().buildIndex;

if(SceneManager.GetActiveScene().buildIndex == ControllerLevel.countUnlockedLevel)
{
ControllerLevel.countUnlockedLevel++;
}
SceneManager.LoadScene(2);
}
но при нажатии на кнопку, происходит только переход на заданную мной сцену, но разблокировка не работает, может кто знает метод, как это сделать, заранее благодарю
Simba1395
UNец
 
Сообщения: 11
Зарегистрирован: 11 май 2022, 17:57

Re: Как сделать разблокировку следующего уровня по нажатию на UI

Сообщение Alkos26Rus 12 июн 2022, 22:15

так у тебя нет сохранения значения countUnlockedLevel, при переходе на следующую сцену это значение опять обнулится
Аватара пользователя
Alkos26Rus
Адепт
 
Сообщения: 1642
Зарегистрирован: 26 ноя 2020, 17:52
Откуда: Москва

Re: Как сделать разблокировку следующего уровня по нажатию на UI

Сообщение Simba1395 25 июн 2022, 16:46

Alkos26Rus писал(а):так у тебя нет сохранения значения countUnlockedLevel, при переходе на следующую сцену это значение опять обнулится

А как правильно его добавить, я пытаюсь использовать PlayerPrefs, это правильно? Вот так выглядит сейчас код:
private void Checked()
{
if (PlayerPrefs.HasKey("countLevel"))
{
countUnlockedLevel = PlayerPrefs.GetInt("countLevel");
}
}

void Start()
{

for (int i = 0; i < transform.childCount; i++)
{
if (i < countUnlockedLevel)
{
#region FirstStateBtn
transform.GetChild(i).GetComponent<Button>().interactable = true;
#endregion
}
else
{
#region SndStateBtn
transform.GetChild(i).GetComponent<Button>().interactable = false;
#endregion
}
PlayerPrefs.SetInt("countLevel", countUnlockedLevel);
}

}
}
Simba1395
UNец
 
Сообщения: 11
Зарегистрирован: 11 май 2022, 17:57

Re: Как сделать разблокировку следующего уровня по нажатию на UI

Сообщение 1max1 25 июн 2022, 21:04

Как говорится: "Миша, всё х*ня, давай по новой". Загружать значение надо в старте или авейке, до того как ты его будешь использовать, метод Checked вообще не вызывается. А сохранять его нужно там, где оно меняется. Допустим, ты прошел уровень, меняешь значение с 1 до 2, сохраняешь. В другой сцене в старте загружаешь и уже потом его используешь.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как сделать разблокировку следующего уровня по нажатию на UI

Сообщение Simba1395 26 июн 2022, 07:40

1max1 писал(а):Как говорится: "Миша, всё х*ня, давай по новой". Загружать значение надо в старте или авейке, до того как ты его будешь использовать, метод Checked вообще не вызывается. А сохранять его нужно там, где оно меняется. Допустим, ты прошел уровень, меняешь значение с 1 до 2, сохраняешь. В другой сцене в старте загружаешь и уже потом его используешь.

Спасибо за подсказку, сохранения заработали, но теперь уровни остаются сохранёнными для всех пользователей, а как можно сделать так чтобы для разных пользователей залогинившихся в игру были свои сохранения, у меня есть базы данных в PHP MyAdmin, мне нужно тоже использовать данную базу чтобы сохранения игры записывались тоже на сервер?
Simba1395
UNец
 
Сообщения: 11
Зарегистрирован: 11 май 2022, 17:57


Вернуться в uGUI

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2