В этой статье вы найдете советы, которые помогу вам получить наибольшую производительность от Mecanim. Они охватывают настройку персонажа, систему анимации и оптимизации работы.
В некоторых случаях вам понадобится создать персонажа с большим количеством костей, например, когда вы хотите много настраиваемых элементов. Эти дополнительные кости увеличат размер сборки, а также нужно ожидать относительных затрат производительности на каждую дополнительную кость. Например, 15 дополнительных костей на риге, в котором уже присутствуют 30 костей, повлекут за собой 50% увеличение времени обработки в режиме Generic. Заметьте, что вы можете использовать дополнительные кости как в режиме Generic, так и в режиме Humanoid. Если текущая анимация не использует дополнительные кости, “затраты” на их обработку незначительны. Эти “затраты” должны быть еще меньше, если к костям ничего не привязано или привязки спрятаны.
Старайтесь собирайте Skinned Meshes в одну, если это возможно. Использовать два Skinned Mesh Renderers для одного персонажа - это плохая идея, беря в расчет продуктивность. Лучше будет, если у вашего персонажа будет только один материал, хотя бывают случаи, когда требуется более одного.
Animator не тратит время на обработку, если к нему не добавлен Controller.
Если сравнивать проигрывание одного Animation Clip без смешивания в Mecanim и в legacy animation system, то Mecanim делает это медленнее. Старая система очень прямолинейная, информация из анимационной кривой записывается напрямую в transform. У Mecanim есть временные буферы, которые используются для расчетов смешивания, то есть присутствует дополнительное копирование данных. Mecanim оптимизирован для анимаций со смешиванием и более сложных настоек анимаций.
Animating scale curves is more expensive than animating translation and rotation curves. To improve performance, avoid scale animations.
Note: This does not apply to constant curves (curves that have the same value for the length of the Animation Clip ). Constant curves are optimized, and are less expensive that normal curves.
Наибольшее количество времени Mecanim затрачивает на просчет анимаций, а затраты на AnimationLayers и AnimationStateMachines сводятся к минимуму. Следовательно “издержки” связанные с дополнительным слоем, синхронизированным или нет, зависят от того, какие анимации и какие деревья смешивания анимаций проигрываются на этом слое. Если вес слоя выставлен в ноль, то он не будет обновляться.
Следующие советы помогут вам определиться, какой режим выбрать:
Здесь много чего можно оптимизировать, вот некоторые полезные советы:
Всегда оптимизируйте анимации, установив опцию Culling Mode у компонента animator в значение Отталкиваясь от Рендеров(Based on Renderers), также отключите свойство Обновлять вне экрана (Update When Offscreen). Следовательно, анимации не будут обновляться, когда персонаж невидим. Для более подробной информации изучите skinned mesh renderer.