PlayableGraph, его узлы и выход
Используйте PlayableGraph для смешивания, объединения и модификации нескольких источников данных. Затем вы можете воспроизвести результат через PlayableOutput. Каждый Playable в PlayableGraph может поддерживать анимацию, аудио или скрипты.
Основные части PlayableGraph являются следующими:
- Сам PlayableGraph представляет поток данных и указывает, что каждый узел производит и потребляет.
- Узлы в PlayableGraph. Каждый узел является воспроизводимым.
- PlayableOutput, который определяет выходные данные PlayableGraph.
PlayableGraph
PlayableGraph обеспечивает гибкий график с временной синхронизацией нескольких источников данных. Unity Engine реализует источники данных для анимации и аудио. Используйте скриптирование для создания собственных источников данных.
Для сравнения: система анимации Mecanim включает граф машины состояний, с помощью которого создаются переходы между состояниями анимации. Такой граф поддерживает только анимацию.
PlayableGraph определяет набор воспроизводимых выходов, связанных с GameObject или компонентом. PlayableGraph также определяет воспроизводимые и их взаимоотношения друг с другом.
PlayableGraph управляет жизненным циклом своих playables и их выходами. Ниже перечислены некоторые из наиболее часто используемых методов PlayableGraph:
- Создать новый PlayableGraph с помощью
PlayableGraph.Create()static method. - Играть PlayableGraph с методом
PlayableGraph.Play(). - Остановить воспроизведение PlayableGraph методом
PlayableGraph.Stop(). - Вручную вычислить состояние PlayableGraph с помощью метода
PlayableGraph.Evaluate(). - Соедините два playable вместе методом
PlayableGraph.Connect(). - Уничтожить PlayableGraph вручную с помощью метода
PlayableGraph.Destroy(). Этот метод автоматически уничтожает все воспроизводимые файлы и воспроизводимые выходные файлы, созданные PlayableGraph. Если вы не уничтожаете PlayableGraph, Unity выдает сообщение об ошибке.
Полный список методов PlayableGraph и более подробные сведения см. в Структура PlayableGraph в Справочнике по скриптам.
Игровой
Playable — это структура C#, реализующая IPlayable интерфейс. Playable — это узел, который соединяется с другими playable и задаёт свои отношения с ними.
Unity реализует ключевые воспроизводимые типы как C# структуры, чтобы избежать выделения память для сбора мусора. Playable класс задаёт несколько базовых методов и служит базовым типом для всех playable. PlayableExtensions статический класс содержит большинство методов для работы с playable.
Поскольку Playable является базовым типом для всех playable, вы можете имплицитно кассировать playable на него. Однако, обратное неверно. Если вы явно кассируете Playable на несовместимый тип, он вызывает исключение.
Типы, наследующие от базового типа Playable, имеют дополнительные методы, специфические для типа. Например, тип AnimationClipPlayable включает в себя методы, специфические для анимационного клипа, инкапсулированного в воспроизводимый файл. Чтобы получить доступ к методам, специфическим для типа, необходимо перевести воспроизводимый файл в соответствующий тип.
Неабстрактные playables имеют Create() открытый статический метод, создающий playable соответствующего типа. Create() метод всегда принимает PlayableGraph в качестве первого параметра, и этот граф владеет новым воспроизводимым объектом. Некоторые типы воспроизводимых объектов могут требовать дополнительных параметров.
Проигрываемый выход
Выход playable — это структура C#, реализующая IPlayableOutput. Определяет выход PlayableGraph.
Unity реализует воспроизводимые типы выхода как C# структуры, чтобы избежать выделения памяти для сбора мусора.
PlayableOutput класс задаёт несколько базовых методов и служит базовым типом для всех выходов playable. PlayableOutputExtensions статический класс содержит большинство методов для работы с выходами playable.
Рекомендуется связать действительные воспроизводимые выходы с воспроизводимыми. Если воспроизводимые выходы не связаны с воспроизводимыми, воспроизводимые выходы не выполняют никаких действий. Чтобы связать воспроизводимые выходы с воспроизводимыми, используйте метод PlayableOutput.SetSourcePlayable(). Связанный воспроизводимый выступает в качестве корня для конкретного воспроизводимого выхода.
У неабстрактных выходов playable есть открытый статический метод Create(), который создает воспроизводимый выход соответствующего типа. Create() метод всегда принимает PlayableGraph в качестве первого параметра, и этот граф владеет новым воспроизводимым выходом. Некоторые воспроизводимые типы выхода могут требовать дополнительных параметров.