Готовый скрипт levelUnlocker (на видео я забыл дописать строчку, отвечающую за переход на следующий уровень - здесь исправлено): using UnityEngine; using UnityEngine.SceneManagement; public class levelUnlocker : MonoBehaviour { private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")){ UnlockNextLevel(); } } private void UnlockNextLevel(){ int currentScene = SceneManager.GetActiveScene().buildIndex; if (currentScene >= PlayerPrefs.GetInt("Scenes")){ PlayerPrefs.SetInt("Scenes", currentScene + 1); } SceneManager.LoadScene(currentScene + 1); } }
Пили ещё! Хотелось бы ещё подобных уроков! А то на русскоязычном ютубе что-то не видно таких толковых коротких видео, где за 5-10-15 минут показывается такой объём информации. Я при просмотре твоих двух курсов понял больше, чем за неделю поисков и попыток разобраться в той информации, которая есть у других ютуберов. Спасибо большое!
Хмм, у меня есть несколько версий, где можно сделать что-то не так, но это связано как раз с кодом и индексами сцен, и если ты уверен что у тебя с ними всё в порядке, то я не знаю. (учти, что PlayerPrefs сохраняет прогресс, так что может ты когда-то перешёл на второй уровень и теперь он у тебя доступен всегда)
@@gedrolitgamedev Спасибо! Я понял, значит он доступен всегда. А как в рабочем билде сделать, чтобы когда 0 сцена перезапускалась был доступен только 1 уровень. На что PlayerPrefs заменить?
Проверь: 1) Создан ли скрипт "LevelManager" 2)Закинул ли ты скрипт на Canvas (4:20) и указаны ли кнопки 3)Перетащен ли Canvas в поле на компоненте Button. Если всё на месте, то можешь написать в тг (в группу или мне в личку) и там со всем разберёмся
Чел, ахуенен. Чуть вникни в режиссуру, и попробуй как в предыдущем ролике делать не чисто гайды, а более развлекательные. Думаю у тя неплохо получится. Удачи!
Почему-то автоматом не перекидывает на следующий уровень. Только разблокирует кнопки выбора уровней(( Вот скрипты: using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class levelManager : MonoBehaviour { public Button[] buttons; private int unlockScenes; private void Start() { unlockScenes = PlayerPrefs.GetInt("Scenes", 1); for (int i = 0; i < buttons.Length; i++){ if (i >= unlockScenes){ buttons[i].interactable = false; } } } public void SceneLoad(int levelIndex){ SceneManager.LoadScene(levelIndex); } } --------------------------------------------------------------------------------- using UnityEngine; using UnityEngine.SceneManagement; public class levelUnlocker : MonoBehaviour { private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")){ UnlockNextLevel(); } } private void UnlockNextLevel(){ int currentScene = SceneManager.GetActiveScene().buildIndex; if (currentScene >= PlayerPrefs.GetInt("Scenes")){ PlayerPrefs.SetInt("Scenes", currentScene + 1); } } } Галку Is Trigger и тег на игроке поставил. Можешь подсказать?
Я вообще забыл добавить строчку кода, которая перекидывает на следующий уровень 🤦♂. Допиши в функции UnlockNextLevel() в конце такую строчку: SceneManager.LoadScene(currentScene + 1); Видимо я записал фрагмент видео и только через некоторое время заметил, что не добавил эту строчку. Добавил, но забыл записать. В следующий раз буду внимательнее, а у тебя всё правильно.
Готовый скрипт levelUnlocker (на видео я забыл дописать строчку, отвечающую за переход на следующий уровень - здесь исправлено):
using UnityEngine;
using UnityEngine.SceneManagement;
public class levelUnlocker : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision) {
if (collision.CompareTag("Player")){
UnlockNextLevel();
}
}
private void UnlockNextLevel(){
int currentScene = SceneManager.GetActiveScene().buildIndex;
if (currentScene >= PlayerPrefs.GetInt("Scenes")){
PlayerPrefs.SetInt("Scenes", currentScene + 1);
}
SceneManager.LoadScene(currentScene + 1);
}
}
Я минут 20 сидел думал в чом дело пока не залез в коменты
@@yur4ik_top4ik 😅👉👈
Пили ещё! Хотелось бы ещё подобных уроков! А то на русскоязычном ютубе что-то не видно таких толковых коротких видео, где за 5-10-15 минут показывается такой объём информации. Я при просмотре твоих двух курсов понял больше, чем за неделю поисков и попыток разобраться в той информации, которая есть у других ютуберов. Спасибо большое!
Ееее, новый видос!
Круто! Классно, что не банальная идея ролика
Прикольно, полезно для новичков
Почему levelUnlocker может открывать сразу 2 уровня (третий остаётся заблокирован)? ошибки в коде нет. билд индекс соответствует каждой сцене
Хмм, у меня есть несколько версий, где можно сделать что-то не так, но это связано как раз с кодом и индексами сцен, и если ты уверен что у тебя с ними всё в порядке, то я не знаю. (учти, что PlayerPrefs сохраняет прогресс, так что может ты когда-то перешёл на второй уровень и теперь он у тебя доступен всегда)
@@gedrolitgamedev Спасибо! Я понял, значит он доступен всегда. А как в рабочем билде сделать, чтобы когда 0 сцена перезапускалась был доступен только 1 уровень. На что PlayerPrefs заменить?
У меня нету кнопки LevelManager 4:39
Проверь: 1) Создан ли скрипт "LevelManager" 2)Закинул ли ты скрипт на Canvas (4:20) и указаны ли кнопки 3)Перетащен ли Canvas в поле на компоненте Button. Если всё на месте, то можешь написать в тг (в группу или мне в личку) и там со всем разберёмся
Чел, ахуенен. Чуть вникни в режиссуру, и попробуй как в предыдущем ролике делать не чисто гайды, а более развлекательные. Думаю у тя неплохо получится. Удачи!
В точку. В конце я упомянул, что пока не будет гайдов, а больше будет уклон в развлекательный контент. Надеюсь вам зайдет.
Почему-то автоматом не перекидывает на следующий уровень. Только разблокирует кнопки выбора уровней((
Вот скрипты:
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class levelManager : MonoBehaviour
{
public Button[] buttons;
private int unlockScenes;
private void Start()
{
unlockScenes = PlayerPrefs.GetInt("Scenes", 1);
for (int i = 0; i < buttons.Length; i++){
if (i >= unlockScenes){
buttons[i].interactable = false;
}
}
}
public void SceneLoad(int levelIndex){
SceneManager.LoadScene(levelIndex);
}
}
---------------------------------------------------------------------------------
using UnityEngine;
using UnityEngine.SceneManagement;
public class levelUnlocker : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision) {
if (collision.CompareTag("Player")){
UnlockNextLevel();
}
}
private void UnlockNextLevel(){
int currentScene = SceneManager.GetActiveScene().buildIndex;
if (currentScene >= PlayerPrefs.GetInt("Scenes")){
PlayerPrefs.SetInt("Scenes", currentScene + 1);
}
}
}
Галку Is Trigger и тег на игроке поставил. Можешь подсказать?
Я вообще забыл добавить строчку кода, которая перекидывает на следующий уровень 🤦♂.
Допиши в функции UnlockNextLevel() в конце такую строчку:
SceneManager.LoadScene(currentScene + 1);
Видимо я записал фрагмент видео и только через некоторое время заметил, что не добавил эту строчку. Добавил, но забыл записать. В следующий раз буду внимательнее, а у тебя всё правильно.
@@gedrolitgamedev ОГОНЬ! Заработало)) Пасип!