Unity - Scripting API: PlayableBehaviour (original) (raw)

class in UnityEngine.Playables

/

Implemented in:UnityEngine.CoreModule

Implements interfaces:IPlayableBehaviour

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Your name Your email Suggestion*

Cancel

Description

PlayableBehaviour is the base class from which every custom playable script derives.

using UnityEngine; using UnityEngine.Animations; using UnityEngine.Playables;

public class BlenderPlayableBehaviour : PlayableBehaviour { public AnimationMixerPlayable mixerPlayable;

public override void PrepareFrame([Playable](Playables.Playable.html) playable, [FrameData](Playables.FrameData.html) info)
{
    float blend = [Mathf.PingPong](Mathf.PingPong.html)((float)playable.GetTime(), 1.0f);

    mixerPlayable.SetInputWeight(0, blend);
    mixerPlayable.SetInputWeight(1, 1.0f - blend);

    base.PrepareFrame(playable, info);
}

}

public class PlayableBehaviourSample : MonoBehaviour { PlayableGraph m_Graph; public AnimationClip clipA; public AnimationClip clipB;

// Use this for initialization
void Start()
{
    // Create the [PlayableGraph](Playables.PlayableGraph.html).
    m_Graph = [PlayableGraph.Create](Playables.PlayableGraph.Create.html)();

    // Add an [AnimationPlayableOutput](Animations.AnimationPlayableOutput.html) to the graph.
    var animOutput = [AnimationPlayableOutput.Create](Animations.AnimationPlayableOutput.Create.html)(m_Graph, "AnimationOutput", GetComponent<[Animator](Animator.html)>());

    // Add an [AnimationMixerPlayable](Animations.AnimationMixerPlayable.html) to the graph.
    var mixerPlayable = [AnimationMixerPlayable.Create](Animations.AnimationMixerPlayable.Create.html)(m_Graph, 2);

    // Add two [AnimationClipPlayable](Animations.AnimationClipPlayable.html) to the graph.
    var clipPlayableA = [AnimationClipPlayable.Create](Animations.AnimationClipPlayable.Create.html)(m_Graph, clipA);
    var clipPlayableB = [AnimationClipPlayable.Create](Animations.AnimationClipPlayable.Create.html)(m_Graph, clipB);

    // Add a custom [PlayableBehaviour](Playables.PlayableBehaviour.html) to the graph.
    // This behavior will change the weights of the mixer dynamically.
    var blenderPlayable = ScriptPlayable<BlenderPlayableBehaviour>.Create(m_Graph, 1);
    blenderPlayable.GetBehaviour().mixerPlayable = mixerPlayable;

    // Create the topology, connect the [AnimationClipPlayable](Animations.AnimationClipPlayable.html) to the
    // [AnimationMixerPlayable](Animations.AnimationMixerPlayable.html).  Also add the BlenderPlayableBehaviour.
    m_Graph.Connect(clipPlayableA, 0, mixerPlayable, 0);
    m_Graph.Connect(clipPlayableB, 0, mixerPlayable, 1);
    m_Graph.Connect(mixerPlayable, 0, blenderPlayable, 0);

    // Use the ScriptPlayable as the source for the [AnimationPlayableOutput](Animations.AnimationPlayableOutput.html).
    // Since it's a ScriptPlayable, also set the source input port to make the
    // passthrough to the [AnimationMixerPlayable](Animations.AnimationMixerPlayable.html).
    animOutput.SetSourcePlayable(blenderPlayable);
    animOutput.SetSourceInputPort(0);

    // Play the graph.
    m_Graph.Play();
}

private void OnDestroy()
{
    // Destroy the graph once done with it.
    m_Graph.Destroy();
}

}

Public Methods

Method Description
OnBehaviourPause This method is invoked when one of the following situations occurs: The effective play state during traversal is changed to PlayState.Paused. This state is indicated by FrameData.effectivePlayState. The PlayableGraph is stopped while the playable play state is Playing. This state is indicated by PlayableGraph.IsPlaying returning true.
OnBehaviourPlay This function is called when the Playable play state is changed to PlayState.Playing.
OnGraphStart This function is called when the PlayableGraph that owns this PlayableBehaviour starts.
OnGraphStop This function is called when the PlayableGraph that owns this PlayableBehaviour stops.
OnPlayableCreate This function is called when the Playable that owns the PlayableBehaviour is created.
OnPlayableDestroy This function is called when the Playable that owns the PlayableBehaviour is destroyed.
PrepareData This function is called during the PrepareData phase of the PlayableGraph.
PrepareFrame This function is called during the PrepareFrame phase of the PlayableGraph.
ProcessFrame This function is called during the ProcessFrame phase of the PlayableGraph.