开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

开发者专栏

关注:2212

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

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

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

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

[复制链接]  [移动端链接]
排名
995
昨日变化
2

10

主题

96

帖子

1410

积分

Rank: 9Rank: 9Rank: 9

UID
3876
好友
0
蛮牛币
2973
威望
0
注册时间
2013-9-14
在线时间
324 小时
最后登录
2018-5-25

专栏作家

发表于 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日久生情
2687/5000
排名
2969
昨日变化
14

0

主题

1888

帖子

2687

积分

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

UID
219676
好友
0
蛮牛币
2480
威望
0
注册时间
2017-7-12
在线时间
367 小时
最后登录
2018-5-25

活力之星

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

回复

使用道具 举报

6蛮牛粉丝
1426/1500
排名
6228
昨日变化
33

0

主题

1059

帖子

1426

积分

Rank: 6Rank: 6Rank: 6

UID
267381
好友
3
蛮牛币
2324
威望
0
注册时间
2018-2-1
在线时间
177 小时
最后登录
2018-5-26

迈向小康

发表于 2018-5-13 09:00:54 | 显示全部楼层
谢谢分享

回复

使用道具 举报

3偶尔光临
200/300
排名
15093
昨日变化
337

1

主题

118

帖子

200

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

4四处流浪
325/500
排名
6074
昨日变化
53

2

主题

37

帖子

325

积分

Rank: 4

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

回复 支持 反对

使用道具 举报

7日久生情
1922/5000
排名
3429
昨日变化
15

0

主题

1331

帖子

1922

积分

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

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

回复

使用道具 举报

2初来乍到
110/150
排名
14178
昨日变化
294

0

主题

27

帖子

110

积分

Rank: 2Rank: 2

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

回复

使用道具 举报

5熟悉之中
973/1000
排名
2123
昨日变化
9

0

主题

14

帖子

973

积分

Rank: 5Rank: 5

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

回复 支持 反对

使用道具 举报

排名
28589
昨日变化
13

0

主题

9

帖子

22

积分

Rank: 1

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

回复

使用道具 举报

6蛮牛粉丝
1051/1500
排名
2713
昨日变化
3

0

主题

292

帖子

1051

积分

Rank: 6Rank: 6Rank: 6

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

回复

使用道具 举报

4四处流浪
366/500
排名
6913
昨日变化
3

2

主题

94

帖子

366

积分

Rank: 4

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

回复

使用道具 举报

4四处流浪
312/500
排名
8673
昨日变化
8

0

主题

100

帖子

312

积分

Rank: 4

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

回复

使用道具 举报

排名
20992
昨日变化
10

0

主题

10

帖子

48

积分

Rank: 1

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

回复

使用道具 举报

3偶尔光临
221/300
排名
28589
昨日变化
13

1

主题

105

帖子

221

积分

Rank: 3Rank: 3Rank: 3

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

回复

使用道具 举报

6蛮牛粉丝
1051/1500
排名
2713
昨日变化
3

0

主题

292

帖子

1051

积分

Rank: 6Rank: 6Rank: 6

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

回复

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条

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