Эта страница содержит несколько советов, которые помогут вам достичь наилучшей производительности в Unity, включая систему анимации и оптимизацию во время выполнения.
Примечание. Советы по моделированию персонажа в 3D-приложении для достижения наилучшей производительности в Unity см. в разделе Моделирование персонажей для оптимальной производительности.
Система анимации
Контроллеры
Animator не тратит время на обработку, если для него не задан Controller.р>
Простая анимация
Воспроизведение одного анимационного клипаанимационных данных, которые можно использовать для анимированные персонажи или простые анимации. Это простое «единичное» движение, такое как (один конкретный пример) «Простояние», «Ходьба» или «Бег». Подробнее
See in Словарь без смешивания может сделать Unity медленнее, чем устаревшая система анимации. Старая система очень прямолинейна, сэмплирует кривую и напрямую записывает в преобразование. Текущая система анимации Unity имеет временные буферы, которые она использует для смешивания, и есть дополнительное копирование выборочной кривой и других данных. Текущая компоновка системы оптимизирована для смешивания анимаций и более сложных настроек.
Масштабные кривые
Анимация кривых масштабирования обходится дороже, чем анимация кривых перемещения и вращения. Чтобы повысить производительность, избегайте анимации масштабирования.
Примечание. Это не относится к постоянным кривым (кривые, которые имеют одинаковое значение длины анимационного клипа ). Постоянные кривые оптимизированы и дешевле, чем обычные кривые. Постоянные кривые, которые имеют те же значения, что и сцена по умолчаниюСцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Подробнее
См. в Словарь значения не записываются в сцену каждый кадр.
Слои
Большую часть времени Unity оценивает анимацию и сохраняет накладные расходы для слоев анимацииПодробнее
См. в Словарь и Машины состояний анимацииГрафик в контроллере аниматора, управляющий взаимодействием состояний анимации. Каждое состояние ссылается на дерево наложения анимации или на один анимационный клип. Подробнее
См. в Словарь до минимума. Стоимость добавления еще одного слоя в аниматор, синхронизированного или нет, зависит от того, какие анимации и деревья смешения воспроизводятся этим слоем. Когда вес слоя равен нулю, Unity пропускает обновление слоя.
Гуманоид против стандартных типов анимации
Вот советы, которые помогут вам выбрать между этими типами:
- При импорте анимации гуманоидованимации с использованием скелетов гуманоидов. Гуманоидные модели, как правило, имеют одинаковую базовую структуру, представляющую основные суставные части тела, головы и конечностей. Это упрощает сопоставление анимации одного гуманоидного скелета с другим, позволяя перенацеливать и использовать инверсную кинематику. Подробнее
См. в Словарь используйте АватарИнтерфейс для перенацеливания анимации с одного рига на другой. Подробнее
См. в Словарь Маска (class-AvatarMask) для удаления целей IK или анимации пальцев если они вам не нужны. - При использовании Generic используется корневое движениедвижение корневого узла персонажа, независимо от того, контролируется ли оно самой анимацией или извне. Подробнее
Просмотреть в Словарь дороже, чем не использовать его. Если в ваших анимациях не используется корневое движение, убедитесь, что вы не указали корневую кость.
Оптимизация на уровне сцены
Можно выполнить множество оптимизаций, вот несколько полезных советов:
- Используйте хэши вместо строк для запросов к Animator.
- Реализуйте небольшой слой искусственного интеллекта для управления аниматором. Вы можете сделать так, чтобы он предоставлял простые обратные вызовы для OnStateChange, OnTransitionBegin и других событий.
- Используйте теги состояний, чтобы легко сопоставить ваш AI конечный автоматНабор состояний в контроллере Animator, который персонаж или анимированный игровой объект может находиться вместе с набором переходов между этими состояниями и переменной для запоминания текущего состояния. Доступные состояния будут зависеть от типа игрового процесса, но типичные состояния включают в себя такие вещи, как бездействие, ходьба, бег и прыжки. Подробнее
См. в Словарь конечный автомат Unity. - Используйте дополнительные кривые для имитации событий.
- Используйте дополнительные кривые для разметки анимации; например, в сочетании с соответствием целифункцией сценария, позволяющей перемещать символы таким образом, что рука или нога приземляются в определенном месте в определенное время. Например, персонажу может понадобиться перепрыгнуть через ступеньки или прыгнуть и схватиться за балку над головой. Подробнее
См. в Словарь.
Оптимизация среды выполнения
Видимость и обновления
Всегда оптимизируйте анимацию, устанавливая Режим отбраковки аниматоров на На основе средств визуализации и отключая свойство Update When Offscreen средства рендеринга мешей со скелетом. Это избавляет Unity от необходимости обновлять анимацию, когда персонаж не виден.