Как сделать перезагрузку сцены

Всем привет. В данной статье мы научимся осуществлять перезагрузку текущей сцены. И для начала используя окно Hierarchy, добавим кнопку с надписью «Рестарт», которая как раз и будет перезагружать нашу сцену. Размер кнопки, текст, и изображение для кнопки отредактируйте сами, на Ваш вкус.
Далее создадим скрипт C#, с названием Scenes, со следующим содержимым:
using UnityEngine; using UnityEngine.SceneManagement; public class Scenes : MonoBehaviour < public void ReastartLevel() < SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); >>
Здесь мы создали метод ReastartLevel(), при вызове которого будет извлекаться индекс текущей сцены при помощью метода Scene.buildIndex. А потом, при помощи метода SceneManager.LoadScene, будет происходить загрузка той сцену, индекс которой мы только что получили.
После написания данного скрипта, сохраняем его, и проделываем следующие шаги.

- Присваиваем данный скрипт нашему объекту(кнопки Рестарт). Для этого необходимо перетащить наш скрипт в окно Inspector для нашей кнопки.
- Далее необходимо перетащить сам объект(кнопка Рестарт) в поле On Click (). После чего выбрать название нашего метода, который мы создавали в скрипте, а именно: Scenes — RestartLevel (). (См. рис)
На этом всё! Последний штрих, который остался сделать, это добавить нашу сцену(если не добавлено) в настройках юнити. Для этого в верхнем меню Unity жмём File — Build Settings. . И далее перетаскиваем нашу сцену в настройки сцен, как указано на скриншоте.

Поздравляем, перезагрузка сцены готова на все 100%. Если у Вас возникли какие-либо трудности, пишите в комментариях. А на этом всё. Всем спасибо.
Перезапуск сцены в Unity
Я понимаю, что весь интернет забит этими методами перезапуска. Но я перепробовал все, и не добился нужного результата. МНЕ НУЖНО, ЧТОБЫ СЦЕНА ПЕРЕЗАПУСКАЛАСЬ ПОЛНОСТЬЮ. То есть все значения, которые изменялись в течение игры, обновились и вернулись к изначальным, то бишь скрипт начинался сначала. Я пробовал обращаться к другим скриптам, для их изменения, но безрезультатно. Поэтому пришел к выводу, что мне нужен АБСОЛЮТНЫЙ перезапуск сцены.
using UnityEngine; using UnityEngine.SceneManagement; public class Operations : MonoBehaviour < public static bool lose = false; // переменная проигрыша (да/нет) private Animator anim; // Ну оно понятно ;) void Start()< anim = GetComponent(); // все запуски анимации anim.SetBool("ButtonPressed", false); > void OnTriggerEnter2D(Collider2D other) < if (other.gameObject.tag == "Enemy")< // просмотр: попал ли противник на объект защиты или нет? lose = true; // если да, то - проиграл >if(lose == true) < // а если проиграл, то проигрывание анимации и небольшое ожидание, для понимания того, что происходит anim.SetBool("ButtonPressed", true); Invoke("LoadLoseScene", 1.8f); >> void LoadLoseScene() < // после ожидания загрузка сцены проигрыша SceneManager.LoadScene("LoseScene"); >public void PlayAgain() < // функция для кнопки - если нажал, то можешь начать сначала SceneManager.LoadScene("GameScene"); >void Awake() < // >
Отслеживать
50k 6 6 золотых знаков 25 25 серебряных знаков 60 60 бронзовых знаков
задан 8 апр 2021 в 18:24
Nikita Nikitin Nikita Nikitin
37 1 1 серебряный знак 6 6 бронзовых знаков
Что такое Awake() для начала.
8 апр 2021 в 19:39
Метод, который вызывается до старта, потому что если менять значение переменной lose в методе Start, то счет очков неточен
9 апр 2021 в 13:23
0
Сортировка: Сброс на вариант по умолчанию
Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.
- c#
- unity3d
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.29.8372
Как в Unity сделать перезапуск сцены после падения персонажа в пропасть?
Делаю платформер в Unity. У меня во время разработки возникла проблема, я в пропасть создал пустой объект, чтобы когда персонаж падал в неё, сцена перезапускалась. На словах всё легко, а в жизни не могу написать скрипт.
- Вопрос задан более трёх лет назад
- 3550 просмотров
Комментировать
Решения вопроса 2
Загрузка сцены здесь
Коллизии и коллайдеры
Все нужные вам функции найдете там.
Ответ написан более трёх лет назад
Нравится 1 2 комментария
ReesDix @ReesDix Автор вопроса
спасибо большое))
ReesDix, Всегда пожалуйста.
Роман @ananas_roma
Пытаюсь кодить.
using UnityEngine.SceneManagement; . SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 1
xmoonlight @xmoonlight
https://sitecoder.blogspot.com
В документации всё есть.
Ответ написан более трёх лет назад
Нравится 1 4 комментария
ReesDix @ReesDix Автор вопроса
что-то я на этом сайте не могу найти нужной информации 🙁
xmoonlight @xmoonlight
ReesDix, поищите на фрилансе.
ReesDix @ReesDix Автор вопроса
ну вообщем то я облазил практически весь сайт, но ничего связанного с моим вопросом не нашёл (но зато нашёл много другой полезной инфы, хоть за это спасибо)
xmoonlight @xmoonlight
ReesDix, там есть ещё и официальный форум.
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- C#
- +1 ещё
Как в юнити проверить существование сцены по названию?
- 1 подписчик
- 5 часов назад
- 28 просмотров
Как перезапустить сцену в unity через код
Dragon-FAST 17 фев 2017, 12:36
Можно ль перезапустить сцену не указывая её?
Допустим фрагмент скрипта:
Синтаксис:
Синтаксис: [ Показать ]
Используется csharp
Application. LoadLevel ( ) ;
Можно ль в этих скобках ничего не указывать — то есть заменить эту команду на другую? Есть такая, для рестарта?
Dragon-FAST UNIт Сообщения: 92 Зарегистрирован: 15 авг 2016, 08:29
Re: перезапуск сцены
samana 17 фев 2017, 13:17
Application.LoadLevel уже устарел, сейчас это должно быть
Синтаксис:
Синтаксис: [ Показать ]
Используется csharp
using UnityEngine.SceneManagement ;
SceneManager. LoadScene ( SceneManager. GetActiveScene ( ) . name ) ;
Но если у вас старая версия Unity, то
Синтаксис:
Синтаксис: [ Показать ]
Используется csharp
Application. LoadLevel ( Application. loadedLevel ) ;
samana Адепт Сообщения: 4738 Зарегистрирован: 21 фев 2015, 13:00 Откуда: Днепропетровск
Re: перезапуск сцены
Dragon-FAST 17 фев 2017, 13:28
samana писал(а): Application.LoadLevel уже устарел, сейчас это должно быть
Синтаксис:
Синтаксис: [ Показать ]
Используется csharp
using UnityEngine.SceneManagement ;
SceneManager. LoadScene ( SceneManager. GetActiveScene ( ) . name ) ;
Но если у вас старая версия Unity, то