Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


PlayableDirector

Controls playback of Playable objects.
Read time 8 minutesLast updated 6 days ago

Definition

public class PlayableDirector : Behaviour, IExposedPropertyTable

Remarks

The PlayableDirector is primarily used by the Timeline Package to handle bindings to scene objects and control playback of the PlayableGraph.
The PlayableDirector object builds a PlayableGraph from a PlayableAsset. Once the graph is built, use the PlayableDirector to manage playback of the graph's Playable. To control playback of the PlayableGraph, use:
To be notified of playback state changes, subscribe to:
To handle references between assets and scene objects, PlayableDirector implements IExposedPropertyTable. To set or get bindings, use:
Multiple PlayableDirectors can reference the same PlayableAsset. When this occurs, each PlayableDirector creates its own independent PlayableGraph with its own scene bindings.
The following example demonstrates how to use the Playable Director to bind scene objects to assets and how to control the Playable Graph.

Examples

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; }}

Properties

Property

Description

durationThe duration of the currently connected Playable in seconds.
extrapolationModeControls how the time is incremented when it goes beyond the duration of the playable.
initialTimeThe time at which the Playable should start when first played.
playableAssetThe PlayableAsset that is used to instantiate a playable for playback.
playableGraphThe PlayableGraph created by the PlayableDirector.
playOnAwakeWhether the playable asset will start playing back as soon as the component awakes.
stateThe current playing state of the component. (Read Only)
timeThe component's current time. This value is incremented according to the PlayableDirector.timeUpdateMode when it is playing. You can also change this value manually.
timeUpdateModeControls how time is incremented when playing back.

Methods

Method

Description

ClearGenericBindingClears the binding of a reference object.
ClearReferenceValueClears an exposed reference value.
DeferredEvaluateSchedules the PlayableDirector to perform PlayableGraph.Evaluate on the PlayableGraph associated with the PlayableDirector.playableAsset on the next update.
EvaluatePerforms PlayableGraph.Evaluate on the PlayableGraph associated with the PlayableDirector.playableAsset at PlayableDirector.time.
GetGenericBindingReturns a binding to a reference object.
GetReferenceValueRetrieves an ExposedReference binding.
PausePauses playback of the currently running playable.
PlayInstatiates a Playable using the provided PlayableAsset and starts playback.
RebindPlayableGraphOutputsRebinds each PlayableOutput of the PlayableGraph.
RebuildGraphDiscards the existing PlayableGraph and creates a new instance.
ResumeResume playing a paused playable.
SetGenericBindingSets the binding of a reference object from a PlayableBinding.
SetReferenceValueSets an ExposedReference value.
StopStops playback of the current Playable and destroys the corresponding graph.

Events

Member

Description

pausedEvent that is raised when a PlayableDirector component has paused.
playedEvent that is raised when a PlayableDirector component has begun playing.
stoppedEvent that is raised when a PlayableDirector component has stopped.

Inheritance

Inherited Members

Operators

Operator

Description

operator ==Compares two object references to see if they refer to the same object.
boolDetermines whether the object exists.
operator !=Compares if two objects refer to a different object.