Как перезапустить сцену в unity через код
Перейти к содержимому

Как перезапустить сцену в unity через код

  • автор:

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

Всем привет. В данной статье мы научимся осуществлять перезагрузку текущей сцены. И для начала используя окно 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#

  • 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, то

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *