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

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

Перезапуск сцены в 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() < // > 

Отслеживать

47.8k 5 5 золотых знаков 22 22 серебряных знака 57 57 бронзовых знаков

задан 8 апр 2021 в 18:24

Nikita Nikitin Nikita Nikitin

37 6 6 бронзовых знаков

Что такое Awake() для начала.

8 апр 2021 в 19:39

Метод, который вызывается до старта, потому что если менять значение переменной lose в методе Start, то счет очков неточен

9 апр 2021 в 13:23

0

Сортировка: Сброс на вариант по умолчанию

Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

  • c#
  • unity3d

Устранение неполадок и известные проблемы (набор средств Visual Studio для Unity)

В этом разделе рассмотрены решения по устранению проблем, типичных для набора средств Visual Studio для Unity, приведено описание известных проблем и показано, как улучшить функционирование набора средств Visual Studio для Unity с помощью отчетов об ошибках.

Устранение неполадок соединения между Unity и Visual Studio

Подтверждение Editor Attaching включено или Code Optimization On Startup установлено значение Debug

В меню Unity выберите Edit / Preferences .

В зависимости от используемой версии Unity:

  • Подтвердите, что Code Optimization On Startup задано как Debug .
  • Или выберите вкладку External Tools . Убедитесь, что Editor Attaching включено поле проверка box.

Не удается подключить

  • Попробуйте временно отключить антивирусную программу или создать правила исключения для VS и Unity.
  • Попробуйте временно отключить брандмауэр или создать правила, разрешающие сетевое взаимодействие между VS и Unity по протоколам TCP/UDP.
  • Некоторые программы, например Team Viewer могут препятствовать обнаружению процессов. Попробуйте временно остановить все лишнее программное обеспечение, чтобы выяснить, повлияет ли это на что-либо.
  • Не переименовывайте основной исполняемый файл Unity, так как VSTU отслеживают только процессы «Unity.exe».

Сбои Visual Studio

Эта проблема может быть вызвана повреждением кэша MEF в Visual Studio.

Попробуйте удалить следующую папку, чтобы сбросить кэш MEF (перед этим закройте Visual Studio):

%localappdata%\Microsoft\VisualStudio\\ComponentModelCache 

Это должно исправить проблему. Если проблема не устранена, запустите командную строку разработчика для Visual Studio от имени администратора и выполните следующую команду:

 devenv /setup 

Visual Studio не отвечает

Некоторые подключаемые модули Unity, такие как Parse, FMOD, UMP (Universal Media Player), ZFBrowser или Embedded Browser, используют собственные потоки. Эта проблема возникает, когда подключаемый модуль подключает собственный поток к среде выполнения, что блокирует вызовы ОС. Это означает, что Unity не может прервать этот поток для отладчика (или перезагрузки домена) и перестает отвечать на запросы.

Для FMOD существует обходной путь. Вы можете передать флаг инициализации FMOD_STUDIO_INIT_SYNCHRONOUS_UPDATE , чтобы отключить асинхронную обработку и выполнять всю обработку в основном потоке.

Если вы разрабатываете собственный подключаемый модуль, рекомендуется использовать асинхронные вызовы процедур (APC) и SleepEx особенно , SignalObjectAndWait , MsgWaitForMultipleObjectsEx WaitForMultipleObjectsEx или WaitForSingleObjectEx функции для правильного сотрудничества с Unity и Mono, когда отладчику необходимо приостановить потоки.

Несовместимый проект в Visual Studio

Важно знать, что Visual Studio сохраняет состояние «Несовместимый» в параметрах проекта и не пытается перезагрузить проект, пока не будет явно использоваться Reload Project . Таким образом, после каждого шага устранения неполадок убедитесь, что вы попытаетесь повторно открыть решение и попытаться щелкнуть правой кнопкой мыши все несовместимые проекты и выбрать Reload Project .

  1. Убедитесь, что Visual Studio установлен в качестве внешнего редактора скриптов в Unity с помощью Edit / Preferences / External Tools .
  2. В зависимости от версии Unity:
    • Убедитесь, что подключаемый модуль Visual Studio установлен в Unity. Help / About должно отображаться сообщение, например Microsoft Инструменты Visual Studio для Unity, в нижней части экрана.
    • Unity 2020.x+: убедитесь, что вы используете последний пакет редактора Visual Studio в Window / Package Manager .
  3. Попробуйте удалить все файлы проектов и решений и папку .vs в проекте.
  4. Попробуйте воссоздать проекты или решение с помощью Open C# Project или Edit / Preferences / External tools / Regenerate Project files .
  5. Убедитесь, что вы установили рабочую нагрузку Game/Unity в Visual Studio.
  6. Попробуйте очистить кэш MEF, как описано здесь.
  7. Попробуйте повторно установить Visual Studio (с помощью рабочей нагрузки Game/Unity только для запуска).
  8. Попробуйте отключить сторонние расширения в случае, если они могут повлиять на расширение Unity. Tools / Extensions

Дополнительные перезагрузки или закрытие всех открытых окон в Visual Studio

Никогда не работайте с файлами проектов непосредственно из обработчика ресурсов или иного средства. Если вам действительно необходимо совершить операции с файлом проекта, мы предоставляем для этого интерфейс API. См. раздел Проблемы со ссылками на сборку.

Если происходят лишние перезагрузки или если при перезагрузке в Visual Studio закрываются все открытые окна, убедитесь в том, что установлены все необходимые целевые пакеты .NET. Дополнительные сведения см. ниже в разделе, посвященном платформам.

В случае исключений не происходит останов отладчика

При использовании предыдущей версии среды выполнения Unity (эквивалентной версии .NET 3.5), в случае необработанного исключения (вне блока try/catch) всегда происходит останов отладчика. Если исключение обрабатывается, отладчик использует окно параметров исключений для определения того, требуется ли останов.

В новой среде выполнения Unity (эквивалентной версии .NET 4.6) появился новый способ управления пользовательскими исключениями. В результате все исключения считаются «обработанными пользователем», даже если они произошли вне блока try/catch. Поэтому их необходимо явным образом задавать в окне параметров исключений, если требуется останов отладчика.

В окне Параметры исключений (отладка > исключений Windows > Параметры), разверните узел для категории исключений (например, исключения среды CLR, то есть исключения .NET) и выберите поле проверка для конкретного исключения, которое требуется поймать в этой категории (например, System.NullReferenceException). Можно также выбрать всю категорию исключений.

В ОС Windows система Visual Studio предлагает скачать целевую платформу Unity

При использовании устаревшей среды выполнения Unity (эквивалент .NET 3.5) Инструменты Visual Studio для Unity требуется платформа .NET Framework 3.5, которая по умолчанию не установлена в Windows 8 или 10. Чтобы устранить эту проблему, следуйте инструкциям по скачиванию и установке .NET Framework 3.5.

При использовании новой среды выполнения Unity пакеты для .NET, предназначенные для пакетов версии 4.6 или 4.7.1, также требуются в зависимости от версии Unity. Установщик Visual Studio можно использовать для быстрой установки (изменить установку, отдельные компоненты, категорию .NET, выбрать все пакеты назначения 4.x).

Проблемы со ссылкой на сборку или свойством проекта

Если ваш проект довольно сложен с точки зрения ссылок или требуется лучше контролировать этот этап создания, вы можете использовать наш API для работы с созданным содержимым проекта или решения. Вы также можете использовать файлы ответов в своем проекте Unity и обрабатывать их.

В последних версиях Visual Studio и Unity лучший подход, как представляется, использует пользовательский Directory.Build.props файл вместе с созданными проектами. Затем вы сможете внести свой вклад в структуру проекта, не вмешиваясь в процесс создания.

Точки останова с предупреждением

Если Visual Studio не удается найти исходное расположение для определенной точки останова, рядом с ней отображается предупреждение. Убедитесь, что используемый вами скрипт правильно загружен и используется в текущей сцене Unity.

Точки останова не срабатывают

Убедитесь, что используемый вами скрипт правильно загружен и используется в текущей сцене Unity. Закройте Visual Studio и Unity, а затем удалите все созданные файлы (*.csproj, *.sln), .vs папку и всю папку библиотеки. Дополнительные сведения об отладке C# можно найти на веб-сайте Unity.

Не удается выполнить отладку проигрывателей Android

Мы используем для обнаружения проигрывателей многоадресную рассылку (это стандартный механизм, применяемый в Unity), но затем применяется простое соединение TCP для подключения отладчика. Этап обнаружения — основная проблема для устройств Android.

Связь через Wi-Fi универсальна, однако она слишком медленная по сравнению с USB из-за задержки. Мы наблюдали отсутствие должной поддержки многоадресной рассылки у некоторых маршрутизаторов или устройств (этим известна серия Nexus).

Связь по USB обладает отличной скоростью для отладки. Инструменты Visual Studio для Unity теперь могут обнаруживать устройства USB и согласовывать с сервером ADB правильную переадресацию портов для отладки.

Проблемы с цветом intelliSense или кодом

Попробуйте обновить Visual Studio до последней версии. Выполните те же действия по устранению неполадок, что и для несовместимых проектов.

Известные проблемы

Применительно к набору средств Visual Studio для Unity существуют известные проблемы, которые возникают вследствие взаимодействия отладчика со старой версией компилятора C# в Unity. Мы работаем над устранением этих проблем, но в то же время могут возникать другие проблемы.

  • При отладке Unity иногда аварийно завершает работу.
  • При отладке Unity иногда зависает.
  • Пошаговая отладка с заходом и выходом из методов иногда ведет себя некорректно, особенно в итераторах или внутри инструкций switch.

Отчеты об ошибках

Помогите нам улучшить качество набора средств Visual Studio для Unity: отправляйте нам отчеты об ошибках при аварийном выходе, зависании или в случае других ошибок. Эти сведения помогают нам определять причину и устранять проблемы в наборе средств Visual Studio для Unity. Спасибо!

Как сообщить об ошибке в случае зависания Visual Studio

Существуют отчеты о том, что иногда Visual Studio зависает при отладке с помощью набора средств Visual Studio для Unity, но чтобы разобраться в проблеме, нам требуется больше данных. Вы можете помочь нам разобраться с проблемой, если выполните следующие действия.

Создание отчета о зависании Visual Studio во время отладки с помощью набора средств Visual Studio для Unity
  1. Откройте новый экземпляр Visual Studio.
  2. Откройте диалоговое окно «Присоединение к процессу». В новом экземпляре Visual Studio в главном меню выберите Отладка, Присоединение к процессу.
  3. Присоедините отладчик к замороженному экземпляру Visual Studio. В диалоговом окне Присоединение к процессу выберите замороженный экземпляр Visual Studio в таблице Доступные процессы , а затем нажмите кнопку Присоединить .
  4. Приостановите отладчик. В новом экземпляре Visual Studio в главном меню выберите Отладка, Прервать все или просто нажмите CTRL+ALT+BREAK.
  5. Создайте дамп потока. В окне командной строки введите следующую команду и нажмите клавишу ВВОД:

Debug.ListCallStack /AllThreads /ShowExternalCode 

    Откройте терминал и получите идентификатор процесса Visual Studio для Mac:

ps aux | grep "[V]isual Studio.app" 
lldb 
process attach --pid THE_PID_OF_THE_VSFM_PROCESS 
bt all 

Наконец, отправьте дамп потока по адресу vstusp@microsoft.com, а также опишите, что вы делали, когда среда Visual Studio зависла.

См. также

Как в Unity сделать перезапуск сцены после падения персонажа в пропасть?

Делаю платформер в Unity. У меня во время разработки возникла проблема, я в пропасть создал пустой объект, чтобы когда персонаж падал в неё, сцена перезапускалась. На словах всё легко, а в жизни не могу написать скрипт.

  • Вопрос задан более трёх лет назад
  • 3227 просмотров

Комментировать

Решения вопроса 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, там есть ещё и официальный форум.

Ваш ответ на вопрос

Войдите, чтобы написать ответ

unity

  • Unity

Как создать историю чата в Unity при помощи сервисов Photon?

  • 1 подписчик
  • 16 часов назад
  • 8 просмотров

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

Всем привет. В данной статье мы научимся осуществлять перезагрузку текущей сцены. И для начала используя окно 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%. Если у Вас возникли какие-либо трудности, пишите в комментариях. А на этом всё. Всем спасибо.

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

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