PlayableBehaviour
класс в UnityEngine.Playables
Выполнено в:UnityEngine.CoreModule
Интерфейсы приспособлений:IPlayableBehaviour
Описание
PlayableBehaviour — базовый класс, от которого наследуется каждый пользовательский скрипт playable.
PlayableBehaviour может быть использован для добавления определенного пользователем поведения к PlayableGraph.
PlayableBehaviour должен быть частью ветви PlayableGraph, которая подключена к выходу, чтобы быть активной.
В следующем примере два AnimationClip управляются двумя AnimationClipPlayable, которые смешиваются AnimationMixerPlayable. Пользовательское 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, пока состояние воспроизведения было «воспроизводится»; это состояние возвращает PlayableGraph.IsPlaying со значением true. |
| OnBehaviourPlay | Эта функция вызывается, когда состояние воспроизведения playable меняется на PlayState.Playing. |
| OnGraphStart | Эта функция вызывается при запуске PlayableGraph, которому принадлежит PlayableBehaviour. |
| OnGraphStop | Эта функция вызывается при остановке PlayableGraph, которой принадлежит PlayableBehaviour. |
| OnPlayableCreate | Эта функция вызывается при создании Playable, которому принадлежит PlayableBehaviour. |
| OnPlayableDestroy | Эта функция вызывается при уничтожении Playable, которому принадлежит PlayableBehaviour. |
| PrepareData | Эта функция вызывается во время фазы PrepareData из PlayableGraph. |
| PrepareFrame | Эта функция вызывается во время фазы PrepareFrame из PlayableGraph. |
| ProcessFrame | Эта функция вызывается во время фазы ProcessFrame из PlayableGraph. |