码迷,mamicode.com
首页 > 其他好文 > 详细

Timeline架构

时间:2021-05-24 17:00:08      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:用户输入   begin   erb   lips   包括   节点   混合   序列   clip   

Playable架构

Playable组成

  • Playable(ScriptPlayable
  • PlayableExtensions
  • PlayableOutput(ScriptPlayableOutput)
  • PlayableOutputExtensions
  • PlayableBinding(ScriptPlayableBinding)
  • PlayableGraph
  • PlayableAsset
  • PlayableBehaviour

Playable

Playable 是运行时节点,其中 ScriptPlayable 属于自定义节点,其中包含封装 PlayableBehaviour 的 PlayableHandler。

PlayableExtensions

PlayableExtensions 定义 Playable 扩展方法,包括 GetDuration() 等。

PlayableOutput

PlayableOutput 是输出节点,其中 ScriptPlayableOutput 属于自定义输出节点,其中包含封装 PlayableBehaviour 的 PlayableOutputHandler。

PlayableOutputExtensions

PlayableOutputExtensions 定义 PlayableOutpu t扩展方法,包括 GetUseData() 等。

PlayableBinding

PlayableBinding 描述 Output 和 Input 关系,其中 ScriptPlayableBinding 属于自定义绑定关系。

PlayableGraph

PlayableGraph 管理 Playable 集合。

PlayableAsset

PlayableAsset 继承 ScriptObject,保存 Playable 序列化数据。

PlayableBehaviour

PlayableBehaviour 实现用户自定义行为。

Playable调用链

sequenceDiagram Note right of PlayableAsset: 预设脚本或者自定义脚本ScriptPlayable<T> PlayableAsset->>Playable: 实例化 PlayableAsset->>PlayableBinding: 描述Output和Input关系 Note right of PlayableBinding: 预设脚本或者自定义脚本ScriptPlayableOutput<T> PlayableBinding->>PlayableOutput: 实例化 PlayableOutput-->>Playable: 绑定输出 Playable->>PlayableGraph: 添加 PlayableOutput->>PlayableGraph: 添加

Timeline架构

Timeline组成

  • PlayableDirector
  • TimelineAsset(PlayableAsset)
  • Track(PlayableAsset)
  • MixerBehaviour(PlayableBehaviour)
  • Clip(PlayableAsset)
  • Behaviour(PlayableBehaviour)

PlayableDirector

PlayableDirector 存储 Track Binding 和 Expose Reference,通过 TimelineAsset 构建 PlayableGraph 来驱动 Timeline。

TimelineAsset

TimelineAsset 存储和编译 Tracks,创建 PlayableBinding 并绑定 PlayableOutput 和 MixerBehaivour。

Track

Track 存储和编译 Clips,创建 PlayableBinding 到 PlayableOutput,实现默认 MixerBehaviour 来桥接 PlayableOutput 和 Clips 输出。

MixerBehaviour

MixerBehaviour 实现 Clip 混合,输出最终值到 PlayableOutput 上。

Clip

Clip 存储持久化数据。

如果引用场景物体,需要使用ExposedReference来获取,通过运行时候 PlayableDirector 的 Resolver 来获取 object。

Behaviour

Behaviour 输出最终值到 PlayableOutput 上。

Timeline调用链

sequenceDiagram 调用者->>PlayableDirector: 调用Play/Stop等接口 PlayableDirector->>PlayableGraph: 实例化 PlayableGraph->>TimelinePlayable: 编译TimelineAsset PlayableDirector-->>TimelinePlayable: 编译TimelineAsset TimelinePlayable->>TrackAsset: 编译所有Track资源 TrackAsset->>MixerBehaviour: 生成混合器 TrackAsset->>TimelineClip: 编译所有Clip资源 TrackAsset->>ScriptPlayableBinding: 实例化 TimelinePlayable-->>ScriptPlayableBinding: 添加Output和Input绑定关系 ScriptPlayableBinding->>ScriptPlayableOutput: 实例化 ScriptPlayableOutput->>TimelineClip: 绑定
  1. TimelineAsset 内部拥有 IntervalTree 来模拟驱动子 Playable,主要是 MixerBehaivour 和 PlayableBehaviour。
  2. TimelineAsset 在启动时实例化所有Playable。
  3. TimelinePlayable 通过绑定 TrackAsset 的 MixerBehaviour InputIndex 和 ScriptPlayableOuput 的 OutputIndex 来实现 Track 定向输出,其中 TimelinePlayable 相当于一个 Brige。

Timeline用法

  1. 监听输入,通过自定义 PlayableScript 实现 OnBehaviourPause 时暂停等待用户输入。
  2. 非线性 Timeline 。
  3. 嵌套游戏逻辑,由 Timeline 驱动游戏进程。

注意点

  1. Clip 可以通过 Template 创建对应的 Behaviour ,不用每次从 Clip 传递参数。
  2. 利用 CustomEditor 定制化 Clip InspectorGUI ,关于 SceneView 可以利用 Handles.PositionHandle 来辅助定位点。
  3. 对于 EditorGUI 需要动态修改值,使用 EditorGUI.BeginChangeCheck 和 EditorGUI.EndChangeCheck 来判断用户是否操作选项。
  4. OnBehaviourPause会在Clip超出Time或者Graph停止时触发,如果需要区分两种情况,利用 effectivePlayState=Playable.Playing 来判断是否为 Grapha 停止,有点类别
    GameObject.activeSelf 和 GameObject.activeInHierarchy。

Timeline架构

标签:用户输入   begin   erb   lips   包括   节点   混合   序列   clip   

原文地址:https://www.cnblogs.com/smallrainf/p/14788140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!