【Unity博客节选】Timeline 静态结构分析

article/2025/8/16 3:26:27

注:软件版本Unity 6.0 + Timeline 1.8.7

作者:CSDN @ RingleaderWang
原文:《Unity第25期——Timeline结构及其源码浅析》
文章首发Github👍:《Timeline结构及其源码浅析》

Bilibili 视频版👍👍:《Timeline结构及其源码解析》https://www.bilibili.com/video/BV1bHjYzNE35

Timeline 静态结构分析

后面我们会了解到,在运行时,timeline会生成树形结构的PlayableGraph,那谁指导它生成呢?就是PlayableAsset,这即是Timeline的静态结构

在Timeline窗口编辑资产后,形成资产树(也是树形结构的,根节点TimelinePlayable,下一层是root track/output track,再下一层是 PlayableAsset)。

PlayableDirector添加timeline资产,然后设置binding后 ,director就能管理整个timeline资产了。

等后面director组件初始化 ,并根据timeline资产树实例化为对应的TimelineAsset后,便能以有序生成各个Playable

所以想理解运行时Timeline就必须先搞明白 静态Timeline的结构,并理清各PlayableAsset类的关系,以及clip和track、playTarget与track的关系(即Binding)。

PlayableAsset 静态资产

在Timeline窗口创建两个Track(Activation Track、Audio Track),并分别添加对应的clip。如下:

这个扩展名为 ".playable"的 timeline 文件,就是所谓的静态资产。

timeline资产文件实例化后就是TimelineAsset类,TimelineAsset下一层是TrackAsset,TrackAsset包含数个PlayableAsset(比如AnimationPlayableAsset、AudioPlayableAsset等)。

结构图如下:

对应的Timeline.playable yaml文件如下图所示:


实例化时,会根据这个yaml文件解析成 PlayableAsset节点链(利用PlayableAsset的parentchildren参数),根节点(Root PlayableAsset)是TimelineAsset,下一层是Root Track,对于Group track或者AnimationTrack允许其下还有SubTrack,每个Track都可以包含数个PlayableAsset

  • root PlayableAsset:就是TimelineAsset,是所有root track的父级节点。
  • root track:就是TimelineAsset的直接子track,从timeline窗口看就是最外层track。
  • output track: 会生成PlayableOutput的track。除 GroupTrack、subGroupTrack、override track外的所有track 都是 output track。

红框为root track,黄框为output track

PlayableDirector

用Timeline窗口查看timeline资产有两种方式,产生的效果会不同:

  • 第一种是从Project窗口打开的独立timeline资产,它无法预览播放,track左侧也没有绑定对象;
  • 另一种就是从挂载PlayableDirector组件对象点开,那么它的timeline就是可预览播放的,track左侧也会显示Bindings

第二种其实就是PlayableDirector组件做的绑定。

  • PlayableDirector利用key-value 来实现绑定。
  • key就是Track对象(在PlayableBinding中被称作sourceObject).
  • value 就是目标对象(在PlayableOutput中被称作target),如ActivationTrack对应的就是待控制的预制体,AudioSourceTrack对应的就是Audio Source组件 ,AnimationTrack 对应的就是Animator。

PlayableDirector组件中SceneBindings值

这样,包含PlayableDirector的结构图就变成下图所示:

包含PlayableDirector的TimelineAsset结构图

PlayableAsset UML类图

TrackAssetTimelineAsset 其实都是继承自PlayableAsset,是一种特殊的PlayableAsset

PlayableAsset UML类图如下图所示:

  • TimelineAsset:最特别的PlayableAsset,存储了所有trackAsset,包含一个CreatePlayable方法,指导运行时创建TimelinePlayable
  • ClipPlayableAsset(蓝色) :表示实现ITimelineClipAsset接口的特殊PlayableAsset,具体类有ActivationPlayableAssetAudioPlayableAssetAnimationPlayableAssetControlPlayableAsset。这些PlayableAsset拥有一个clipCaps属性,表明这个片段在Timeline窗口拥有的能力,这些能力包含:
    • Looping 循环
    • Extrapolation 外推断,分Pre和post,表示两个clip中间空白区域的播放逻辑:
      • none 保持为开始帧
      • hold 保持为最后一帧
      • loop 循环(跳帧循环)
      • pingpong 镜像循环
      • continue 根据动画源文件的loop决定是连续循环还是保持为最后一帧
    • ClipIn 起始裁切
    • SpeedMultiplier 倍速
    • blend 混合
  • PlayableAsset都包含一个CreatePlayable方法,用于运行时创建对应的Playable。
  • TrackAsset(左下黄色) 拥有CreateTrackMixer方法,运行时也是创建Playable(重写CreateTrackMixer方法的话可以创建自定义MixerPlayable),可以接收多个input输入。
  • TrackAssetCompileClips方法在运行时编译其所包含的所有clip,生成RuntimeClip并加入到TimelinePlayableIntervalTree中,用于Timeline运行时标识哪个clip被激活。
  • 继承TrackAsset的类有GroupTrack、ActivationTrack、AudioTrack、ControlTrack、SignalTrack、AnimationTrack等,这与timeline窗口能添加的track一致。
  • TrackAsset 有两个特性(Attribute
    • TrackClipType:表明Track能添加的clip类型,也就是上面继承playable且实现ITimelineClipAsset接口的类。
    • TrackBindingType :表明 output Track对应的PlayableOutputtarget参数类型,也即PlayableBindingoutputTargetType参数。
[TrackClipType(typeof(AnimationPlayableAsset)]
[TrackBindingType(typeof(Animator))]

http://www.hkcw.cn/article/EWOSSOxpAq.shtml

相关文章

男子救助轻生女友时意外溺亡 悲剧引发深思

男子救助轻生女友时意外溺亡!近日,江苏南通发生了一起悲剧。一名女子在社交媒体上发布视频称,她跳江轻生后获救,但救援的男友却不幸溺亡。据参与救援打捞的江苏省启东市飞龙救援队队员金先生介绍,这名女子是自杀,跳江前曾打电话给男友。男友赶到江边时,女子已经跳入江中…

各地龙舟赛又来整活了!2025年端午龙舟赛事地图:25省份“水上竞速”

端午将至,作为上半年最后一个小长假,端午节不仅是中国首个入选世界非物质文化遗产的传统节日,也承载着华夏人民祈福禳灾、爱国强民的美好愿望。随着大家的生活方式日渐多元化,端午节从传统民俗节日升级为热门文旅符号,民俗体验成为假期消费新趋势。龙舟竞渡自古是端午节的…

宝马5系裸车价最低跌至26万元 终端优惠探底

5月29日,北京一家宝马4S店的销售专员对新款宝马5系给出了裸车报价,最低价为26.3万元,但需要选择贷款购车方案。据计算,这款“2025款 525Li 豪华套装”5系,现在落地价仅约32.5万元。另一家北京的宝马4S店则给出了约33万元的落地价。今年4月,“宝马5系跌破29万元”曾冲上热…

白宫幕僚长身份“被盗” FBI介入 幕后操纵者待查

美国联邦政府正在调查一起冒充白宫幕僚长苏珊怀尔斯的事件。一名身份不明人员假冒怀尔斯,联系了多名美国共和党人士和企业高管。目前,FBI与白宫正调查该行为幕后操纵者及其动机。近几周来,一些参议员、美国企业高管以及其他知名人士都收到来自自称是白宫幕僚长的人的短信和电…

幼童走失42小时被警犬搜寻找到 生死救援中的关键角色

5月27日13时许,经过42小时的持续搜救,重庆市公安局刑侦总队警犬追踪小组成功找到走失的2岁男童兵兵。在这场与时间赛跑的救援中,警犬技术发挥了关键作用。5月25日20时21分,綦江区公安局接到报警称石角镇下湾村一名2岁男童兵兵走失。警方立即启动应急预案,组织民警和当地村…

2025电动牙刷哪个牌子质量好?六大品牌质量解析

当消费者搜索2025年电动牙刷排行时,最核心的诉求便是寻找真正经得起考验的口腔护理伙伴;而一份靠谱的电动牙刷推荐清单,必须建立在临床实证与持久耐用的双重标准之上。在专业机构与15万用户的共同验证中,Usmile笑容加Y30以突破性的技术创新交出了答卷——这款获得瑞士SGS安全认…

上传图片转成3D VR效果 / VR效果在项目中落地实践 / 应用到了用photo-sphere-viewer + A-Frame +Threejs 通过不同的技术分别实现了3D VR效果

系统简介 : 该系统为 react TS tailwindcss 响应式系统 , 上传图片后可实现手动旋转 3D 图片,还包含了 6 贴图立方体展示和 6 贴图动态展示 项目亮点 : 包含主流3D VR库 , 可根据具体需求选择具体的技术栈 全部页面概览 这是单面VR页面的代码(gif展示页面) import React, { …

鸿蒙NEXT应用加固工具哪家更好?国内主流的6款对比

随着鸿蒙NEXT系统的推进,越来越多企业将目光投向鸿蒙生态下的应用部署与数据安全。尤其是在核心业务App逐步上架鸿蒙原生平台的当下,如何实现高效、可靠的鸿蒙NEXT应用安全加固,已成为企业技术选型的关键环节。本文将对市面上6款主流的鸿蒙NE…

包粽子日赚500元 传统手艺撬动就业新机遇

包粽子日赚500元 传统手艺撬动就业新机遇!临近端午,粽香四溢的背后,一场关于传统手艺与市场需求的“双向奔赴”正在上演。掌握包粽技艺的年轻人正以“一叶一技”撬动就业新机遇。非遗手艺不仅成为节令经济的热门选择,还催生了产业链条上的多元岗位,比如有外语能力的大学生…

英伟达被曝将在华新建设施 引发美议员安全担忧

英伟达被曝将在华新建设施 引发美议员安全担忧。美国半导体巨头英伟达CEO黄仁勋多次强调,美国对华芯片管制不仅没有成功,反而促使中国加速自主研发芯片的进程。然而,美国议员对此并未采纳,反而针对英伟达在中国的新布局提出质疑。据彭博社和《华尔街日报》报道,英伟达计划…

高盛总裁:债市对美国债务更担心 财政恶化风险加剧

高盛总裁:债市对美国债务更担心 财政恶化风险加剧!高盛总裁John Waldron表示,目前宏观层面的最大风险并不是关税。尽管所有注意力都集中在关税上,但债券市场的关注点正转向美国减税方案和财政状况,这令人担忧。有分析人士指出,债券投资者正在为财政恶化的更高风险定价,他…

LINUX中TOMCAT安装和Nginx源码安装

一:web服务器 1、Web服务器介绍 ‌Web服务器是一种运行于互联网上的计算机硬件或软件,用于存储、处理和传输网页和其他网站内容。‌ 它通常运行在服务器上,绑定服务器的IP地址并监听某一个TCP端口,接收来自客户端的请求&#x…

解密Linux权限管理:从入门到精通

目录 shell命令及其工作原理 用户切换 sudo 权限 是什么? 为什么? 怎么办? 目录权限怎么理解 ? 缺省权限 1.umask 的目的是什么? 2.为什么要有umask 粘滞位 shell命令及其工作原理 Shell的最简单定义&#…

ROS云课基础篇-01-Linux-250529

ROS云课基础篇收到了很多反馈,正面评价比例高,还有很多朋友反馈需要写更具体一点。 ROS云课基础篇极简复习-C、工具、导航、巡逻一次走完-CSDN博客 于是,有了这篇以及之后的案例,案例均已经测试过8年,但没有在博客公…

贵州一公路巨石砸中汽车 司机轻伤车辆受损

5月28日,贵州毕节市七星关区何官屯镇一条通村公路突发落石。一块约300斤重的巨石砸中一辆过路汽车,导致车辆从路边高坎坠落。司机受轻伤,送医检查后当日返家,车损由保险公司处理。落石还击碎了附近民房的玻璃门,但无人受伤。事发地为地质灾害点,连续下雨诱发了这次事故。…

向武汉理工大学捐赠1分钱也有证书 培养捐赠意识

向武汉理工大学捐赠1分钱也有证书 培养捐赠意识!近日,武汉理工大学发起了一项名为“527生日捐”的活动,庆祝学校合并组建25周年。一些校友晒出了捐赠1分钱后获得的电子证书,引起了网友的关注。校方表示,该活动不限捐赠金额,主要目的是让大家参与进来,培养捐赠意识。有武…

Python打卡训练营-Day13-不平衡数据的处理

浙大疏锦行 知识点: 不平衡数据集的处理策略:过采样、修改权重、修改阈值交叉验证代码 过采样 过采样一般包含2种做法:随机采样和SMOTE 过采样是把少的类别补充和多的类别一样多,欠采样是把多的类别减少和少的类别一样 一般都是缺…

嵌入式学习笔记 - freeRTOS任务优先级抢占,时间片抢占的实现机制

一 任务优先级、时间片抢占 已经知道freeRTOS的任务切换函数发生在systick中断中,如下图 由上图可见,任务切换有个先决条件TaskIncrementTick()函数返回为1,这个函数如下图, 函数返回值为xSwitchRequired&…

西方国家对乌军援,再加码 张学峰:俄乌双方的较量还将持续一段时间:局势再添变数

德国新任总理默茨近日表示,德国等西方国家已全面解除对援乌远程武器的射程限制,允许乌克兰使用其提供的武器打击俄罗斯境内纵深军事目标。对此,俄罗斯总统新闻秘书佩斯科夫回应称,这一决定与俄方寻求和平解决冲突的努力背道而驰。默茨上任以来,在是否向乌克兰提供“金牛座…

钟南山谈新冠后肺结节患者增多 CT检查增加发现更多

钟南山谈新冠后肺结节患者增多 CT检查增加发现更多!我国约有1.5亿肺结节高危人群,每年新检出的肺结节病例达1000万至2000万。新冠疫情后肺结节检出率显著上升的原因之一是新冠后做CT的人数大幅增加,进而让更多的肺结节被发现。中国工程院院士钟南山表示,环境污染等也会导致…