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

PlayableDirector

класс в UnityEngine.Playables

Наследуется от:Behaviour

Выполнено в:UnityEngine.DirectorModule


Интерфейсы приспособлений:IExposedPropertyTable

Описание

Управление воспроизведением объектов ,Playable,.

PlayableDirector в основном используется пакетом Timeline для обработки привязок к объектам сцены и управления воспроизведением PlayableGraph.
Объект PlayableDirector создает PlayableGraph из PlayableAsset. После создания графа используйте PlayableDirector для управления воспроизведением графа Playable. Для управления воспроизведением PlayableGraphиспользуйте:

Чтобы получать уведомления об изменениях состояния воспроизведения, подпишитесь на:

Для обработки ссылок между ассетами и объектами сцены PlayableDirector реализует IExposedPropertyTable. Для установки или получения привязок используйте:

Несколько PlayableDirectors могут ссылаться на один и тот же PlayableAsset. Когда это происходит, каждый PlayableDirector создает свой собственный независимый PlayableGraph со своими собственными привязками сцены.

В следующем примере показано, как использовать Playable Director для привязки объектов сцены к ассетам и как управлять Playable Graph.

using System;
using UnityEngine;
using UnityEngine.Playables;
using Object = UnityEngine.Object;

[RequireComponent(typeof(PlayableDirector))]
public class PlayableDirectorSample : MonoBehaviour
{
    PlayableDirector m_Director;
    TestPlayableAsset m_TestAsset;

    void Start()
    {
        m_Director = gameObject.GetComponent<PlayableDirector>();
        m_TestAsset = ScriptableObject.CreateInstance<TestPlayableAsset>();
        m_Director.playableAsset = m_TestAsset;
        m_Director.SetGenericBinding(m_TestAsset, gameObject);
        BuildGraphAndPlay();
    }

    void BuildGraphAndPlay()
    {
        m_Director.RebuildGraph();
        if (m_Director.playableGraph.IsValid())
        {
            m_Director.Play();
        }
    }
}

[Serializable]
class TestBehaviour : PlayableBehaviour
{
    public override void OnPlayableCreate(Playable playable) { }

    public override void OnPlayableDestroy(Playable playable) { }
    public Object target { get; set; }
    public override void OnBehaviourPlay(Playable playable, FrameData info)
    {
        base.OnBehaviourPlay(playable, info);
        if (target != null)
        {
            Debug.Log($"{target.name}-{info.frameId}");
        }
    }
}

[Serializable]
class TestPlayableAsset : PlayableAsset
{
    public override Playable CreatePlayable(PlayableGraph graph, GameObject owner)
    {
        ScriptPlayable<TestBehaviour> behavior = ScriptPlayable<TestBehaviour>.Create(graph);
        var director = owner.GetComponent<PlayableDirector>();
        Object target = director.GetGenericBinding(this);
        behavior.GetBehaviour().target = target;
        return behavior;
    }
}

Свойства

Свойство Описание
durationПродолжительность текущего подключенного Playable в секундах.
extrapolationModeУправляет тем, как увеличивается время, когда оно превышает длительность воспроизводимого файла.
initialTimeВремя, в которое Playable должен начаться при первом проигрывании.
playableAssetPlayableAsset, который используется для создания экземпляра воспроизводимого файла для воспроизведения.
playableGraphPlayableGraph создан PlayableDirector.
playOnAwakeНачнется ли воспроизведение воспроизводимого элемента сразу после пробуждения компонента.
stateТекущее состояние воспроизведения компонента. (Только для чтения)
timeТекущее время компонента. Это значение увеличивается в соответствии с PlayableDirector.timeUpdateMode во время воспроизведения. Вы также можете изменить это значение вручную.
timeUpdateModeУправляет тем, как увеличивается время при воспроизведении.

Открытые методы

Метод Описание
ClearGenericBindingСнимает привязку объекта ссылки.
ClearReferenceValueОчистка открытого справочного значения.
DeferredEvaluateРасписывает PlayableDirector на выполнение PlayableGraph.Evaluate на PlayableGraph, связанном с PlayableDirector.playableAsset при следующем обновлении.
EvaluateВыполняет PlayableGraph.Evaluate на PlayableGraph, связанном с PlayableDirector.playableAsset на PlayableDirector.time.
GetGenericBindingВозвращает привязку к объекту ссылки.
GetReferenceValueПолучает привязку ExposedReference.
PauseПриостанавливает воспроизведение текущего воспроизводимого файла.
PlayУстанавливает воспроизводимый файл с помощью предоставленного PlayableAsset и начинает воспроизведение.
RebindPlayableGraphOutputsПересвязывает каждый PlayableOutput из PlayableGraph.
RebuildGraphОтбрасывает существующий PlayableGraph и создает новый экземпляр.
ResumeВозобновление проигрывания приостановленного игрового элемента.
SetGenericBindingУстанавливает привязку объекта ссылки из PlayableBinding.
SetReferenceValueЗадает значение ExposedReference.
StopОстановка воспроизведения текущего Playable и уничтожение соответствующего графа.

Мероприятия

Мероприятие Описание
pausedСобытие, возникающее при приостановке компонента PlayableDirector.
playedСобытие, которое возникает, когда компонент PlayableDirector начал воспроизводиться.
stoppedСобытие, возникающее при остановке компонента PlayableDirector.
Унаследованные члены 4

Свойства

СвойствоОписание
enabledTrue, если это Поведение включено, в противном случае false.
isActiveAndEnabledПроверяет, включён ли компонент, прикреплен ли он к GameObject, который активен в иерархии, и вызван ли OnEnable компонента.
gameObjectGameObject, к которому прикреплен данный компонент. Компонент всегда прикрепляется к игровому объекту.
tagТег этого игрового объекта.
transformTransform прикреплен к этому GameObject.
transformHandleTransformHandle этого GameObject.
hideFlagsДолжен ли объект быть скрытым, сохраняться с Scene или изменяться пользователем?
nameИмя объекта.

Открытые методы

МетодОписание
BroadcastMessageВызывает метод с именем methodName на каждом MonoBehaviour в этом игровом объекте или любом из его дочерей.
CompareTagПроверяет тег GameObject на соответствие определенному тегу.
GetComponentПолучает ссылку на компонент типа T на том же GameObject, что и указанный компонент.
GetComponentInChildrenПолучает ссылку на компонент типа T на том же GameObject, что и указанный компонент, или на любого ребенка GameObject.
GetComponentIndexПолучает индекс компонента на его родительском GameObject.
GetComponentInParentПолучает ссылку на компонент типа T на том же GameObject, что и указанный компонент, или на любой родитель GameObject.
GetComponentsПолучает ссылки на все компоненты типа T на том же GameObject, что и указанный компонент.
GetComponentsInChildrenПолучает ссылки на все компоненты типа T на том же GameObject, что и указанный компонент, и на любого ребенка GameObject.
GetComponentsInParentПолучает ссылки на все компоненты типа T на том же GameObject, что и указанный компонент, и любой родитель GameObject.
SendMessageВызывает метод с именем methodName на каждом MonoBehaviour в этом игровом объекте.
SendMessageUpwardsВызывает метод с именем methodName на каждом MonoBehaviour в этом игровом объекте и на каждом предшественнике поведения.
TryGetComponentПолучает компонент указанного типа, если он существует.
GetInstanceIDПолучает экземпляр ID объекта.
ToStringВозвращает имя объекта.

Статические методы

МетодОписание
DestroyУдаляет GameObject, компонент или ресурс.
DestroyImmediateНемедленно уничтожает указанный объект. Используйте с осторожностью и только в режиме редактирования.
DontDestroyOnLoadНе уничтожать целевой Объект при загрузке нового Scene.
FindAnyObjectByTypeПолучает любой активный загруженный объект типа Type.
FindFirstObjectByTypeПолучает первый активный загруженный объект типа Type.
FindObjectsByTypeПолучает список всех загруженных объектов типа Type.
InstantiateКлонирует исходный объект и возвращает клон.
InstantiateAsyncЗахватывает моментальный снимок первоначального объекта (который должен быть связан с каким-либо GameObject) и возвращает AsyncInstantiateOperation.

Операторы

ОператорОписание
boolСуществует ли объект?
оператор!=Сравнивает, если два объекта ссылаются на разные объекты.
оператор ==Сравнение двух ссылок на объекты для определения того, относятся ли они к одному и тому же объекту.