Искать на сайте Unity

Улучшения процесса производства

17 февраля 2015 г. через Технологии | 6 мин. читать
StrippedPrefabInstances
StrippedPrefabInstances
Охваченные темы
Поделиться

Is this article helpful for you?

Thank you for your feedback!

Предстоящий релиз Unity 5.0 имеет множество новых функций. Он также включает в себя ряд улучшений технологических процессов и производства, особенно при работе в команде.

Конфликты сцен

Одна из больших неудобств при работе в команде – конфликты в файлах сцен. Это может произойти, когда несколько человек одновременно работают над одной и той же сценой. Чаще всего это происходит потому, что до Unity 5.0 все объекты, которые содержатся в экземплярах префабов, добавляются в файл сцены. Простое открытие сцены и повторное сохранение ее без изменения ничего не даст, Unity запишет все экземпляры объектов из префабов в файл сцены, которые, безусловно, создадут конфликты, если кто-то сделал то же самое.

Эти типы конфликтов в экземплярах объектов часто трудно решить, так как они могут быть из-за идентификаторов и других свойств, для которых не всегда понятно, как разрешить конфликт.

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

В Unity 5.0 в файл сцены больше не записываются все объекты экземпляра, только объект префаба, содержащий изменения экземпляров, и объекты, ссылки на которые могут быть записаны в сцене. Экземпляр объекта, на который ссылаются, записан в упрощенной форме для обеспечения постоянного идентификатора ссылки.

StrippedPrefabInstances
Click to see full image.

Это показано на рисунке слева. Здесь я создал простую сцену в Unity 4,6, содержащую префаб, в котором находятся куб, сфера и капсула. Слева вы видите, как все объекты экземпляра записаны в сцену, справа – только объект префаба с изменениями, которые хранятся в файле сцены.

Единственный конфликт, связанный с префабами, теперь будет в модификации префаба, когда два человека модифицируют экземпляр префаба в сцене. Это решить намного проще.

Вторая причина конфликтов при работе в команде – лайтмаппинг.

В Unity 4.6 свойства лайтмаппинга, такие как смещение и масштабирование карты освещения, хранятся в каждом Renderer, который включен в карту освещения. Это означает, что эти свойства сохраняются в файле сцены. Если два художника редактируют одну и ту же сцену и делают лайтмаппинг, все эти свойства, вероятно, будут конфликтовать. В результате чего появятся много крошечных конфликтов по всему файлу сцены, даже если изменения в игровых объектах не конфликтуют. Там может быть много конфликтов, и вы не можете просто решить использовать одно из обновлений в файле сцены, потому что вы можете потерять работу, которая была сделана в другом обновлении. Но вам, вероятно, придется сделать этот выбор и повторно выполнить некоторую работу. Это может занять даже больше времени, так как нужно будет принимать решения по каждому конфликту.

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

Инструмент слияния сцены

Конечно, еще будут ситуации, когда файлы сцен будут конфликтовать, но эти конфликты в основном будут связаны с фактическими изменениями, внесенными художниками, и их разрешение должно быть намного проще. Чтобы сделать разрешение этих конфликтов еще проще, мы разработали инструмент слияния сцены, который знает семантику файла сцены и способен объединять файлы сцены на основе объектов, не на простом сравнении текста. Инструмент работает в качестве предварительного слияния, а значит, вы можете настроить систему управления версиями, чтобы сделать слияние сцены перед запуском инструмента трехстороннего слияния. Или если вы используете встроенную в Unity поддержку VCS, можно включить инструмент слияния сцены через настройки редактора.

Конечно, все это будет работать только тогда, когда вы используете текстовую сериализацию. Если вы храните сцены и другие двоичные файлы в двоичном формате, конфликт не может быть решен, и сцены не могут быть объединены.

 Отслеживание изменений сцены

Раздражают не только сами конфликты, но и постоянные просьбы сохранить сцену, даже если вы не сделали никаких изменений. Такие вещи, как изменение позиции окна или проверки определенных ассетов, может сделать сцену «измененной», хотя очевидно, что вы ничего в сцене не поменяли. Косвенные изменения в сцене, например, повторное запекание в лайтмаппинге также сделает сцену «измененной». Для Unity 4.6 это было правильным поведением, но так как все данные связанные с лайтмаппингом были перенесены в ассет, Unity больше не будет требовать, чтобы вы сохраняли сцену снова.

Чтобы решить проблему ложной маркировки сцены как «измененная», мы перенесли отслеживание состояния изменения сцены в систему отмены. Все, что касается сцен в редакторе, возможно отменить. Когда новый элемент добавляется в стек отмены, UndoManager будет проверять, с чем связаны изменения – со сценой или с ассетом. Если это связано со сценой, UndoManager увеличит значение изменений сцены. Когда вы выполните отмену, значение изменений сцены будет уменьшено, так что вы можете сделать кучу изменений в вашей сцене, отменить их все, и сцена больше не будет помечена как «измененная». Конечно, переделки сделают сцену снова «измененной».

Но и это еще не все

Выбор в окне иерархии и в окне сцены были сильно оптимизированы, что делает Unity более отзывчивым при работе с большими сценами.

AudioClip теперь поддерживает мультиредактирование, так что вам больше не придется изменять одно и то же свойство на всех клипах по одному. Просто выберите все клипы, которые вы хотите изменить, и установите свойство для всех сразу.

При первом импорте FBX файлов теперь учитываются настройки масштабирования в файле. Больше не требуется, чтобы вы импортировали FBX, изменяли масштаб, а затем повторно импортировали его. Если параметры масштабирования в файле установлены правильно, модель должна выглядеть правильно после первого импорта.

И последнее, но не менее важное, что я хочу упомянуть. Редактор переходит на 64-бит на всех платформах. Это означает, что работа с проектами, у которых раньше были проблемы из-за нехватки памяти, должна стать более приятной.

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

17 февраля 2015 г. через Технологии | 6 мин. читать

Is this article helpful for you?

Thank you for your feedback!

Охваченные темы
Unity, логотипы Unity и другие торговые знаки Unity являются зарегистрированными торговыми знаками компании Unity Technologies или ее партнеров в США и других странах (подробнее здесь). Остальные наименования и бренды являются торговыми знаками соответствующих владельцев.