Определить удаление игрового объекта от действий пользователя - PullRequest
0 голосов
/ 28 апреля 2020

Я работаю в системе, которая автоматически генерирует и выпускает объект сценариев, представляющий уникальность для игрового объекта с указанным вложением компонента.

Процесс генерации, кажется, работает очень хорошо, но я столкнулся с проблемой когда я хочу выпустить объект сценариев. Данный сценарий помечен «ExecuteInEditMode» и реализует метод OnDestroy для объявления менеджера о том, что его объект сценариев должен быть удален. Проблема в том, что OnDestroy вызывается в 4 ситуациях из того, что я могу сказать:

  • Нажмите на игру
  • Переключение сцены
  • Удаление вручную (единственный, который я хочу работать с)
  • При закрытии редактора

Сначала я смог обойти 2:

if (Application.isPlaying == false && Math.Abs(Time.timeSinceLevelLoad) > 0.00001f)

Но я не найти хорошее решение для «При закрытии редактора». Я видел, что EditorApplication.quitting можно использовать для этого случая, но документация предупреждает, что это событие не вызывается, когда unity cra sh или принудительно завершается, и я не Я не хочу потерять все мои объекты сценариев, если редактор cra sh.

Я ищу надежное решение, чтобы избежать этой проблемы, если кто-то может мне помочь, пожалуйста.

Спасибо, имейте хороший день

1 Ответ

1 голос
/ 28 апреля 2020

Просто обработайте событие выхода из приложения.

это событие не вызывается, когда unity cra sh или вынуждено выйти, и я не хочу потерять все свои объекты сценариев, если редактор cra sh.

Когда рушится Unity, то и ваша программа тоже не будет работать. Просто убедитесь, что при обычной рабочей процедуре (при обычном завершении работы) вы сохраняете свои изменения.

В Unity3D, если вы редактируете свою сцену и не сохраняете, если происходит сбой редактора, вы теряете все свои изменения. То же самое произойдет с тем, что вы здесь строите. Чтобы уменьшить этот риск (поскольку предотвращение достаточно сложно, если не невозможно), вы можете сохранять каждую минуту, всегда сохранять каждое изменение во временном местоположении или сохранять, например, каждую игру.

Например, я добавил в свой проект сценарий, который автоматически сохраняет сцены (сцены) всякий раз, когда я нажимаю кнопку воспроизведения, поэтому при редактировании сцены я нажимаю кнопку воспроизведения сейчас и затем для проверки, и все это автоматически сохраняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...