版本: Unity 6 (6000.0)
语言英语
  • C#

PlayableBehaviour

UnityEngine.Playables 中的类

/

实现于:UnityEngine.CoreModule


实现接口:IPlayableBehaviour

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每项修改建议,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的修改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

PlayableBehaviour 是每个自定义可播放脚本派生的基类。

PlayableBehaviour 可用于向 PlayableGraph 添加用户定义的行为。

PlayableBehaviour 必须是 PlayableGraph 中连接到输出的分支的一部分才能处于活动状态。

在以下示例中,两个 AnimationClip 由两个 AnimationClipPlayable 控制,这两个 AnimationClipPlayableAnimationMixerPlayable 进行混合。自定义的 BlenderPlayableBehaviour 正在每帧修改 AnimationMixerPlayable 的输入权重。

using UnityEngine;
using UnityEngine.Animations;
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);

// 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 ScriptPlayable as the source for the AnimationPlayableOutput. // Since it's a ScriptPlayable, also set the source input port to make the // passthrough to the AnimationMixerPlayable. 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(); } }

公共方法

OnBehaviourPause当以下情况之一发生时,将调用此方法:遍历期间的有效播放状态更改为 PlayState.Paused。此状态由 FrameData.effectivePlayState 指示。PlayableGraph 停止,而可播放的播放状态为 Playing。此状态由 PlayableGraph.IsPlaying 返回 true 指示。
OnBehaviourPlay当可播放的播放状态更改为 PlayState.Playing 时,将调用此函数。
OnGraphStart当拥有此 PlayableBehaviour 的 PlayableGraph 启动时,将调用此函数。
OnGraphStop当拥有此 PlayableBehaviour 的 PlayableGraph 停止时,将调用此函数。
OnPlayableCreate当拥有 PlayableBehaviour 的 Playable 创建时,将调用此函数。
OnPlayableDestroy当拥有 PlayableBehaviour 的 Playable 被销毁时,将调用此函数。
PrepareData此函数在 PlayableGraph 的 PrepareData 阶段调用。
PrepareFrame此函数在 PlayableGraph 的 PrepareFrame 阶段调用。
ProcessFrame此函数在 PlayableGraph 的 ProcessFrame 阶段调用。