Unity 6.3
0 онлайн 42 гостей 3 в системе
Вход

Контроль времени воспроизводимого клипа

В этом примере показано, как использовать метод SetTime() для ручной установки начала воспроизводимого клипа. В этом примере также показано, как использовать метод Pause() для приостановки воспроизводимого клипа.

Предварительные условия

Перед тем, как использовать скрипт ControlTiming в вашем проекте, в нем должно быть следующее:

  • GameObject, например, куб или капсула. Вам не нужно вручную добавлять компонент Animator к этому GameObject. Атрибут RequireComponent добавляет этот компонент, если он не присутствует.
  • Клип анимации, который анимирует свойства GameObject. Например, клип, который анимирует положение и вращение GameObject.

Добавление и запуск скрипта

Чтобы использовать скрипт ControlTiming в вашем проекте, выполните следующие действия:

  1. Добавьте компонент скрипта в файл GameObject. Назовите файл скрипта ControlTiming.cs и используйте следующий код:

    using UnityEngine;
    using UnityEngine.Playables;
    using UnityEngine.Animations;
    
    [RequireComponent(typeof(Animator))]
    public class ControlTiming : MonoBehaviour
    {
        public AnimationClip clip;
        public float time;
        PlayableGraph graph;
        AnimationClipPlayable clipPlayable;
    
        void Start()
        {
            // Create and name the graph.
            graph = PlayableGraph.Create("ControlTiming");
    
            var output = AnimationPlayableOutput.Create(graph, "Animation", GetComponent<Animator>());
    
            // Wrap the clip in a playable.
            clipPlayable = AnimationClipPlayable.Create(graph, clip);
    
            // Connect the Playable to an output.
            output.SetSourcePlayable(clipPlayable);
    
            // Play the graph.
            graph.Play();
    
            // Pause the clip playable. This stops time from progressing automatically.
            clipPlayable.Pause();
        }
    
        void Update ()
        {
            // Control the time manually.
            clipPlayable.SetTime(time);
        }
    
        void OnDisable()
        {
            // Destroy all Playables and Outputs created by the graph.
            graph.Destroy();
        }
    }
    
  2. В компоненте Скрипт выберите клип анимации для приостановленного клипа. Вы также можете установить время начала в секундах. Если вы установите значение, которое больше длины клипа и клип не повторяется, клип проиграет последний кадр.

  3. Выберите Играть, чтобы переключить редактор в режим воспроизведения.

  4. В компоненте Скрипт поэкспериментируйте с различными временами начала. Поскольку анимационный клип приостановлен, отображается только первый кадр анимации.

  5. Если у вас установлен пакет визуализатора PlayableGraph, используйте его для отображения PlayableGraph.

Дополнительные ресурсы