标签:用户输入 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: 绑定
- TimelineAsset 内部拥有 IntervalTree 来模拟驱动子 Playable,主要是 MixerBehaivour 和 PlayableBehaviour。
- TimelineAsset 在启动时实例化所有Playable。
- TimelinePlayable 通过绑定 TrackAsset 的 MixerBehaviour InputIndex 和 ScriptPlayableOuput 的 OutputIndex 来实现 Track 定向输出,其中 TimelinePlayable 相当于一个 Brige。
Timeline用法
- 监听输入,通过自定义 PlayableScript 实现 OnBehaviourPause 时暂停等待用户输入。
- 非线性 Timeline 。
- 嵌套游戏逻辑,由 Timeline 驱动游戏进程。
注意点
- Clip 可以通过 Template 创建对应的 Behaviour ,不用每次从 Clip 传递参数。
- 利用 CustomEditor 定制化 Clip InspectorGUI ,关于 SceneView 可以利用 Handles.PositionHandle 来辅助定位点。
- 对于 EditorGUI 需要动态修改值,使用 EditorGUI.BeginChangeCheck 和 EditorGUI.EndChangeCheck 来判断用户是否操作选项。
- 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