У нас есть проект Unity3D, в котором были скрипты режима редактирования / воспроизведения, помеченные атрибутом [ExecuteAlways]
, который помогает нам в работе UI / UX, автоматически изменяя свойства прикрепленных GameObject.
Наша проблема в том, что эти скрипты вызываются каждый раз при загрузке / сохранении проекта, а это означает, что каждый раз, когда разработчик открывает проект или сохраняет несвязанный файл, все затронутые нами префабы / игровые объекты повторно сериализуются Unity, вызывая большой «спам» из ненужных изменений в системе управления версиями.
Мы попытались обойти это, определив, находимся ли мы в режиме редактора и сериализуемые значения не меняются, но проблема в том, что мы не может определить, сохраняем ли мы:
Application.isEditor
кажется ложным во время сохранения UNITY_EDITOR
кажется не определенным - несмотря на Visual Studio подключена к Unity, ни одна из точек останова не достигнута.
Debug.Log()
вызовы, похоже, не выполняются во время сохранения
Есть ли способ каким-то образом определить, наш [ExecuteAlways]
поведение запускается во время сохранения?