游戏蛮牛学习群(纯技术交流,不闲聊):539178957
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2282

当前位置:游戏蛮牛 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 1685|回复: 19

[bxh883] 探索TimelinePlayableAPI,让Timeline为所欲为

[复制链接]  [移动端链接]
排名
1059
昨日变化
1

10

主题

96

帖子

1419

积分

Rank: 9Rank: 9Rank: 9

UID
3876
好友
0
蛮牛币
2994
威望
0
注册时间
2013-9-14
在线时间
330 小时
最后登录
2018-7-19

专栏作家

发表于 2018-5-12 15:58:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 bxh883 于 2018-5-12 15:58 编辑

简介
之前快速地学习了一下Timeline,需要详细回顾的兄弟可以回头看我的上一篇,快速了解Timeline
这里我们做快速的回顾,Timeline主要分为TimelineInstance和TimelineAsset,可以用Timeline PlayableDirector控制播放哪一个TimelineAsset
今天我们再来看看Timeline中的Track,并且动手实现一个老年迪斯科场景。
一图流
Track
Timeline可以添加很多Track来对不同的对象做控制。
  • Track
      在Clip上控制动画,可以在有Animator组件但是没有AnimatorController的情况下直接播放动画。
  • Audio Track
      在Clip上控制音频播放。
  • Activtion Track
      在Clip上控制物体是否在场景中Active,GameObject.SetActive()的作用
  • Control Track
      在Clip上可以控制和时间相关的元素,可以控制粒子系统,克隆物体,控制另一个timeline等。厉害的是我们放在Control Track上的例子特效,可以随意地拖动Timeline来预览效果,对特效兄弟来说是应该很强大很爽的地方。
  • Playable Track
      控制继承自BasicPlayableBehaviour的clip
      (在2017.4.0f1版本里原先的BasicPlayableBehaviour因为性能原因已经被弃用,建议采用PlayableAsset和PlayableBehaviour)

如何有了这篇文章
虽然上面提供的几个track已经有很强大的功能了,但是实际操作中我们会发现这些远远不够,官方的Mannul上也没有更多的介绍,有效的资料是少之又少。那么官方演示的demo里的对话系统是怎么通过Timeline实现的呢?
于是我开始寻找,在Youtube上找到了Unite Europe2017上的演讲视频,Extending Timeline with your own playables(https://www.youtube.com/watch?v=uBPRfcox5hE&t=2331s)。
研究了一番,里面的例子就是LightControl将自己的理解分享给大家。让大家都能在Timeline里为所欲为。
深度理解Timeline
Timeline是建立在Playables API(https://docs.unity3d.com/Manual/Playables.html)上的PlayableGraph系统,在这套系统中Timeline相当于是一个函数的作用,我们从Assset传入InputData,Timeline处理后输出OutputData到对应的Component。
这套系统中有4个关键部分,Data,Clip,Mixer,Track
我希望我的这张图可以帮助大家快速对应和理解这4个部分。
Timeline也一个Templete,可以方便快速地被复用。
  • The Data
      用来存放数据,需要被序列化。继承自PlayableBehaviour

Data.png

  • The Clip
      也就是asset,继承自PlayableAsset。因为是asset,所以不能直接与场景中的物体关联,需要关联场景中的物体时要用ExposedReference来声明,
      并且通过Resolve方法赋值。

Clip.png

  • The Mixer
      Mixer控制当前Track中所有的clip的行为,根据每个clip不同的输入权重,计算需要的结果。 Mixer在Timeline中算是最重要的部分了。

Mixer.png

  • The Track
      把Mixer计算的结果输出,可以指定输出到绑定的物体上。继承自TrackAsset。有好几个特性可以绑定,

    • TrackColor : 定义在编辑器中Track的标识颜色
    • BindingObejctType : 当前Track上的Mixer输出后的数据要传递的对象类型
    • TrackClipType : 当前Track上的Clip的类型

Track.png

实践
通过上面的探究,我们要做老年disco效果,那就来定制一个自己的track,专门用来控制Light,我们叫LightControl
  • 创建一个新的场景添加两个角色,一红一蓝
  • 新建一个ParticleSytem,烘托一下Disco的气氛
  • 创建一个新的Timeline,DiscoTimeline
  • 在DiscoTimeline上新建2个AnimationTrack,一个控制蓝角色的动画,一个控制红角色的动画
  • 在DiscoTimeline新建一个ControlTrack,控制刚才创建的ParticleSystem
  • 在场景中新建一个SpotLight和一个PointLight
  • 在DiscoTimeline中新建一个TrackGroup,命名为PlayableLight
  • 在DiscoTimeline中新建我们的LightControl Track,将SpotLight与这个Track绑定,命名为SpotLight
  • 在DiscoTimeline中新建我们的LightControl Track,将PointLight与这个Track绑定,命名为PointLight
  • 将我们自定义的Clip添加2段到SpotLightTrack上,在一个Clip上的LookAtTarget上绑定蓝角色,另一个Clip上的LookAtTarget绑定到红角色
  • 将我们自定义的Clip添加2段到PointLightTrack上,设置变换的灯光颜色和强度。
    最后的Timeline就是这样

Play and Enjoy It
结尾
关于Playable API比较有趣的是,Playable使用C#结构体而非C++对象来保存对象。使用结构体的目的是避免分配GC所需的内存。这样用起来可能稍微有点复杂,但由于该API承载了未来的很多功能,所以必须注重性能问题
掌握了Timeline的系统设计理念后,我们基本上就能掌握Timeline,实现自己想要的效果了,希望大家能打开脑洞,用Timeline创造出更多好玩的东西来。
另外视频中提到的PreviewMode我还没有非常明白,就先不写出来了,如果有兄弟知道的话,希望你能不吝赐教。

大家在实践的过程中有遇到什么问题,可以提出来,我很乐意和大家一起分享。
这是Demo的Github地址https://github.com/aaBaO/DemoRepository
欢迎大家Fork过去参考TimelinePlayableAPI




回复

使用道具 举报

7日久生情
3136/5000
排名
2243
昨日变化
15

0

主题

2098

帖子

3136

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
2437
威望
0
注册时间
2017-7-12
在线时间
462 小时
最后登录
2018-8-14

活力之星

发表于 2018-5-12 18:54:06 | 显示全部楼层
谢谢分享

回复

使用道具 举报

7日久生情
1906/5000
排名
4247
昨日变化
2

0

主题

1334

帖子

1906

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
267381
好友
5
蛮牛币
3186
威望
0
注册时间
2018-2-1
在线时间
256 小时
最后登录
2018-8-6
发表于 2018-5-13 09:00:54 | 显示全部楼层
谢谢分享

回复

使用道具 举报

4四处流浪
462/500
排名
6914
昨日变化
54

2

主题

163

帖子

462

积分

Rank: 4

UID
277168
好友
0
蛮牛币
1880
威望
0
注册时间
2018-4-14
在线时间
123 小时
最后登录
2018-8-14
发表于 2018-5-14 08:59:18 | 显示全部楼层
感谢楼主

回复

使用道具 举报

4四处流浪
445/500
排名
4998
昨日变化
5

3

主题

53

帖子

445

积分

Rank: 4

UID
259967
好友
0
蛮牛币
213
威望
0
注册时间
2017-12-16
在线时间
125 小时
最后登录
2018-8-14
发表于 2018-5-14 10:12:57 | 显示全部楼层
666666666666666666666666666666666666

回复 支持 反对

使用道具 举报

7日久生情
2601/5000
排名
2731
昨日变化
5

0

主题

1847

帖子

2601

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
185339
好友
0
蛮牛币
3781
威望
0
注册时间
2016-11-20
在线时间
266 小时
最后登录
2018-8-14
发表于 2018-5-14 13:59:19 | 显示全部楼层
[发帖际遇]: 一个袋子砸在了 步行骑士 头上,步行骑士 赚了 1 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

2初来乍到
125/150
排名
13794
昨日变化
4

0

主题

32

帖子

125

积分

Rank: 2Rank: 2

UID
237430
好友
0
蛮牛币
246
威望
0
注册时间
2017-8-14
在线时间
39 小时
最后登录
2018-6-29
发表于 2018-5-14 15:12:09 | 显示全部楼层

回复

使用道具 举报

6蛮牛粉丝
1215/1500
排名
1656
昨日变化
3

0

主题

15

帖子

1215

积分

Rank: 6Rank: 6Rank: 6

UID
15382
好友
0
蛮牛币
2603
威望
0
注册时间
2014-2-24
在线时间
476 小时
最后登录
2018-8-14
QQ
发表于 2018-5-14 16:05:14 | 显示全部楼层
好文,看标题就值得收藏

回复 支持 反对

使用道具 举报

排名
29456
昨日变化
14

0

主题

9

帖子

22

积分

Rank: 1

UID
279476
好友
0
蛮牛币
47
威望
0
注册时间
2018-5-1
在线时间
3 小时
最后登录
2018-5-14
发表于 2018-5-14 17:50:20 | 显示全部楼层
好文,值得收藏

回复

使用道具 举报

6蛮牛粉丝
1287/1500
排名
2266
昨日变化
9

0

主题

348

帖子

1287

积分

Rank: 6Rank: 6Rank: 6

UID
136635
好友
0
蛮牛币
1301
威望
0
注册时间
2016-2-15
在线时间
369 小时
最后登录
2018-8-14
发表于 2018-5-15 09:09:09 | 显示全部楼层
很好,谢谢

回复

使用道具 举报

5熟悉之中
515/1000
排名
5585
昨日变化
1

2

主题

140

帖子

515

积分

Rank: 5Rank: 5

UID
252889
好友
1
蛮牛币
1809
威望
0
注册时间
2017-11-6
在线时间
145 小时
最后登录
2018-8-14
QQ
发表于 2018-5-15 10:20:50 | 显示全部楼层
谢谢分享

回复

使用道具 举报

4四处流浪
367/500
排名
7920
昨日变化
7

0

主题

111

帖子

367

积分

Rank: 4

UID
42770
好友
0
蛮牛币
594
威望
0
注册时间
2014-8-30
在线时间
116 小时
最后登录
2018-8-10
发表于 2018-5-15 10:24:47 | 显示全部楼层
谢谢分享!

回复

使用道具 举报

排名
19289
昨日变化
10

0

主题

11

帖子

64

积分

Rank: 2Rank: 2

UID
240757
好友
0
蛮牛币
27
威望
0
注册时间
2017-8-31
在线时间
29 小时
最后登录
2018-7-26
发表于 2018-5-15 11:09:11 | 显示全部楼层
谢谢分享

回复

使用道具 举报

3偶尔光临
233/300
排名
29456
昨日变化
14

1

主题

108

帖子

233

积分

Rank: 3Rank: 3Rank: 3

UID
192640
好友
0
蛮牛币
24
威望
0
注册时间
2016-12-15
在线时间
115 小时
最后登录
2018-8-6
发表于 2018-5-15 18:02:49 | 显示全部楼层
谢谢分享
[发帖际遇]: liying 乐于助人,奖励 2 蛮牛币. 幸运榜 / 衰神榜

回复

使用道具 举报

6蛮牛粉丝
1287/1500
排名
2266
昨日变化
9

0

主题

348

帖子

1287

积分

Rank: 6Rank: 6Rank: 6

UID
136635
好友
0
蛮牛币
1301
威望
0
注册时间
2016-2-15
在线时间
369 小时
最后登录
2018-8-14
发表于 2018-5-16 09:09:14 | 显示全部楼层
很好,谢谢分享

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表