Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

PlayableBehaviour

класс в UnityEngine.Playables / Реализовано в: UnityEngine.CoreModule / Реализует интерфейсы: IPlayableBehaviour

Описание

PlayableBehaviour — это базовый класс, от которого наследуется каждый настраиваемый игровой сценарий.

С помощью 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;

// Используйте это для инициализации void Start() { // Создаем PlayableGraph. m_Graph = PlayableGraph.Create();

// Добавляем AnimationPlayableOutput к графику. var animOutput = AnimationPlayableOutput.Create(m_Graph, "AnimationOutput", GetComponent<Animator>());

/ Добавляем AnimationMixerPlayable к графику. var mixerPlayable = AnimationMixerPlayable.Create(m_Graph, 2, false);

// Добавляем два AnimationClipPlayable к графику var clipPlayableA = AnimationClipPlayable.Create(m_Graph, clipA); var clipPlayableB = AnimationClipPlayable.Create(m_Graph, clipB);

// Добавляем пользовательский PlayableBehaviour к графику // Это поведение будет динамически изменять вес микшера. var blenderPlayable = ScriptPlayable.Create(m_Graph, 1); blenderPlayable.GetBehaviour().mixerPlayable = mixerPlayable;

// Создаем топологию, подключаем AnimationClipPlayable к // AnimationMixerPlayable. Иначе добавляем BlenderPlayableBehaviour. m_Graph.Connect(clipPlayableA, 0, mixerPlayable, 0); m_Graph.Connect(clipPlayableB, 0, mixerPlayable, 1); m_Graph.Connect(mixerPlayable, 0, blenderPlayable, 0);

// Использовать ScriptPlayable в качестве источника для AnimationPlayableOutput. // Так как это ScriptPlayable, также установите исходный входной порт, чтобы сделать // переход к AnimationMixerPlayable. animOutput.SetSourcePlayable(blenderPlayable); animOutput.SetSourceInputPort(0);

// Воспроизвести график. m_Graph.Play(); }

private void OnDestroy() { // Создаем топологию, подключаем m_Graph.Destroy(); } }

Публичные Методы

OnBehaviourPause Этот метод вызывается при возникновении одной из следующих ситуаций:
Эффективное состояние воспроизведения во время обхода изменяется на PlayState.Paused. На это состояние указывает FrameData.EffectivePlayState.
PlayableGraph останавливается, пока состояние playable play находится в Playing. На это состояние указывает 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.
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3