Playable 是可自定义的运行时对象,此类对象可连接在一起并包含在 PlayableGraph 中以创建复杂的行为。
Playable 可用于创建复杂且灵活的数据评估树。Playable 是可连接在一起的节点,连接后,每一个 Playable 都可以设置其子项的“权重”或“影响”。
同一图中的可播放项包含在一个 PlayableGraph 中。一个 PlayableGraph 可有多个输出(也称为“播放器”),它们实现了 IPlayableOutput。PlayableOutput 获取其源可播放项的结果并将其应用到场景中的对象。例如,将 AnimationPlayableOutput 链接至图中的可播放项节点(“源可播放项”),以及场景中的 Animator。播放此图时,Animator 应用由图评估生成的动画姿势。PlayableOutputs 的数量与可播放项的类型(AnimationPlayableOutput、AudioPlayableOutput、TexturePlayableOutput 以及 ScriptPlayableOutput 等)一样多。
ScriptPlayable<T> 是一种特殊的可播放项。其主要角色为一个“自定义”可播放项。它是一个模板化结构,其中 T
必须由 PlayableBehaviour 派生。借助这些自定义 PlayableBehaviour,您可以在特定时间在图评估中写入行为(请参阅 PlayableBehaviour.PrepareFrame 以及 PlayableBehaviour.ProcessFrame)。ScriptPlayable 的一个典型例子是控制 Timeline 图的 TimelinePlayable。ScriptPlayable 会创建负责轨道和剪辑的可播放项并将其链接在一起。
播放 PlayableGraph 时,会遍历每个 PlayableOutput。遍历期间,它将在每个 Playable 上调用 PrepareFrame 方法。这允许 Playable“为下一评估做好准备”。在 PrepareFrame 阶段期间,每个 Playable 都可修改其子项(通过添加新的输入或是移除部分输入)。这样,Playable 可在运行时在 Playable 树中“生成”新的子树枝。这意味着 Playable 树不是静态结构。它们可以随时间进行调整和改变。
一旦准备完毕,PlayableOutput 会负责处理结果,这也是将其称为“玩家”的原因。如果使用 AnimationPlayableOutput,Animator 会负责处理图;如果使用 ScriptPlayableOutput,将在每个 ScriptPlayable 上调用 PlayableBehaviour.ProcessFrame。
注意:您可以在实现 IPlayable 的任何结构上使用 PlayableExtensions 方法。
注意:在手册中,详细介绍了 Playables API。
Null | 返回无效的 Playable。 |