AnimatorUpdateMode
перечисление
Описание
Управляет, когда и как компонент Animator обновляет анимации.
Используйте AnimatorUpdateMode перечисление, чтобы управлять моментом обновления анимации. От этого зависит, насколько анимации согласуются с логикой и физикой вашей игры.
- Нормальный режим (AnimatorUpdateMode.Normal): Синхронизирует обновления анимации с игровым циклом во время фазы обновления. Используйте этот режим для анимаций, которые работают независимо от физики.
- Фиксированный режим (AnimatorUpdateMode.Fixed): Синхронизирует обновления анимации с циклом обновления, в первую очередь для согласования с обновлениями движка физики. По умолчанию оценки физики происходят во время FixedUpdate, но вы можете настроить этот цикл в соответствии с требованиями вашего проекта. Установите Animator.animatePhysics в true для правильной обработки столкновений и других физических взаимодействий.
- Unscaled Time (AnimatorUpdateMode.UnscaledTime): Сохраняет анимацию на скорости реального времени, не затрагиваемую масштабированием времени. Это идеально для UI элементов или эффектов, которые остаются активными, когда игра приостановлена.
Каждый режим влияет на поведение и взаимодействие анимации. Выберите режим, который соответствует потребностям вашей игры, чтобы избежать проблем, таких как пропускаемые кадры или десинхронизация.
Дополнительные ресурсы: Animator, Time, FixedUpdate, Animator.updateMode и FixedUpdate.
// This script demonstrates changing the Animator update mode when pausing the game. // Attach this script to a GameObject with an Animator component. using UnityEngine; public class PlayerController : MonoBehaviour { private Animator animator; private bool isGamePaused = false; void Awake() { animator = GetComponent<Animator>(); if (animator == null) { Debug.LogError("Animator component not found!"); return; } } void Start() { // Set initial animator update mode to Normal for regular gameplay animator.updateMode = AnimatorUpdateMode.Normal; } void Update() { // Toggle pause with the "P" key if (Input.GetKeyDown(KeyCode.P)) { isGamePaused = !isGamePaused; HandlePauseState(isGamePaused); } // Handle player movement input if the game is not paused if (!isGamePaused) { HandleMovement(); } } private void HandleMovement() { // Basic movement logic float move = Input.GetAxis("Horizontal"); animator.SetFloat("Speed", Mathf.Abs(move)); // Additional Movement logic can be added here } private void HandlePauseState(bool pause) { if (pause) { animator.updateMode = AnimatorUpdateMode.UnscaledTime; Time.timeScale = 0f; // Pause the game } else { animator.updateMode = AnimatorUpdateMode.Normal; Time.timeScale = 1f; // Resume the game } Debug.Log("Game paused: " + pause + " - Animator update mode set to: " + animator.updateMode); } }
Дополнительные ресурсы: ,Animator,, ,Time,, ,FixedUpdate,, ,Animator.updateMode,.
Свойства
| Свойство | Описание |
|---|---|
| Normal | Animator обновления в цикле обновления, выравниваясь с основным циклом игры для стандартной обработки анимации. |
| Fixed | Animator обновления в цикле FixedUpdate. Это идеально подходит для анимаций, основанных на физике, которые требуют независимости частоты кадров. |
| UnscaledTime | Animator обновляется независимо от Time.timeScale, поддерживая прогресс анимации в реальном времени. |