class in UnityEngine.Playables
Implements interfaces:IPlayableBehaviour
PlayableBehaviour 是一个基类,所有自定义的可播放脚本均派生自该类。
PlayableBehaviour 可用于将用户定义的行为添加到 PlayableGraph。
PlayableBehaviour 必须是 PlayableGraph 分支的一部分,该分支连接到输出以保持活动状态。
在以下示例中,两个 AnimationClip 由两个 AnimationClipPlayable(由 AnimationMixerPlayable 混合)控制。自定义 BlenderPlayableBehaviour 修改了每一帧 AnimationMixerPlayable 的输入权重。
using UnityEngine;
using UnityEngine.Playables;
public class BlenderPlayableBehaviour : PlayableBehaviour
{
public AnimationMixerPlayable mixerPlayable;
public override void PrepareFrame(Playable playable, FrameData info)
{
float blend = Mathf.PingPong((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.
m_Graph = PlayableGraph.Create();
// Add an AnimationPlayableOutput to the graph.
var animOutput = AnimationPlayableOutput.Create(m_Graph, "AnimationOutput", GetComponent<Animator>());
// Add an AnimationMixerPlayable to the graph.
var mixerPlayable = AnimationMixerPlayable.Create(m_Graph, 2, false);
// Add two AnimationClipPlayable to the graph.
var clipPlayableA = AnimationClipPlayable.Create(m_Graph, clipA);
var clipPlayableB = AnimationClipPlayable.Create(m_Graph, clipB);
// Add a custom PlayableBehaviour 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 to the
// AnimationMixerPlayable. 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 AnimationMixerPlayable as the source for the AnimationPlayableOutput.
animOutput.SetSourcePlayable(blenderPlayable);
// Play the graph.
m_Graph.Play();
}
private void OnDestroy()
{
// Destroy the graph once done with it.
m_Graph.Destroy();
}
}
OnBehaviourPause | 在 Playable 播放状态更改为 PlayState.Paused 时调用此函数。 |
OnBehaviourPlay | 在 Playable 播放状态更改为 PlayState.Playing 时调用此函数。 |
OnGraphStart | 在拥有此 PlayableBehaviour 的 PlayableGraph 启动时调用此函数。 |
OnGraphStop | 在拥有此 PlayableBehaviour 的 PlayableGraph 停止时调用此函数。 |
OnPlayableCreate | 在拥有 PlayableBehaviour 的 Playable 创建后调用此函数。 |
OnPlayableDestroy | 在拥有 PlayableBehaviour 的 Playable 销毁后调用此函数。 |
PrepareFrame | 在 PlayableGraph 的 PrepareFrame 阶段调用此函数。 |
ProcessFrame | 在 PlayableGraph 的 ProcessFrame 阶段调用此函数。 |