查看原文
其他

Unity 2019.1新功能:Timeline Signals

Unity Unity官方平台 2022-05-07

自从Unity 2017.1发布Timeline以来,受到了广大开发者的欢迎,创作出不少精彩作品。我们也收到很多反馈,其中一项就是Timeline事件功能的请求,它是Timeline缺少的功能,一些用户通过剪辑实现了事件功能,但剪辑有自身的缺点。

 

本文将为你介绍Unity 2019.1中新推出的Timeline Signals信号功能。


新功能:Marker标记

Marker标记功能可以向Timeline添加的新内容,它用于表示一个时间点。



标记可以在Timeline上和剪辑一样添加和处理,能够使用选取,复制粘贴和编辑模式等功能。就像剪辑一样,标记也有具体类型,例如:剪辑分为动画剪辑、激活剪辑、控制剪辑等类型。

 

在Unity 2019.1中,Timeline提供了首个内置标记:Signal Emitter信号发射器标记


Signal Emitter信号发射器

Signal Emitter信号发射器用于在Timeline经过特定时间点的时候,触发场景状态的改动。

 

我们使用了信号(Signal)而不是事件(Event),因为信号有“广播”的特点,而不会混淆已有的Unity事件和动画事件。


如何添加Signal Emitter信号发射器

Signal Emitter信号发射器可以添加到Timeline和轨道上,但会有某些限制。

  • 添加到Timeline上:这是Unity 2019.1版本的新概念,信号可以添加到Timeline本身,此时不需要使用轨道。


  • 添加到轨道上:信号也可以添加到任意轨道,只要轨道接受绑定即可。我们也加入了新的轨道类型,即Signal Track信号轨道。这类轨道只接受信号,不接受剪辑。


工作原理

为了在Timeline上正确设置信号,我们需要三个部分:

  • Signal Asset信号资源信号资源是发射器和接收器之间的联系。通常信号资源会用作标识符。


  • Signal Emitter信号发射器: 信号发射器会放在Timeline上,它包含对信号资源的引用。运行信号发射器时,如果当前时间比发射器的时间大,发射器会被触发,发射器会把信号资源发送到信号接收器。


  • Signal Receiver信号接收器信号接收器是带有一组反应的组件,每个反应都关联到信号资源。当接收器知道信号已被触发时,它会激活关联到对应信号资源的反应。


如下图所示,当关联到同一信号资源的发射器触发时,相应反应会被激活。



我们主要的设计思路是,使发送信号的部分即发射器,尽可能独立于监听并对信号作反应的部分即接收器。这种设计会提高灵活性,而且非常强大。


使用Singal Emitter信号发射器

创建Timeline,单击编辑模式按钮附近的图钉按钮。

 

 

此时会显示Timeline Marker区域,在时间标尺下的区域单击右键,选择Add Signal Emitter进行添加信号发射器。



在Signal Emitter信号发射器检视窗口中,单击Create Signal…,在项目中创建新的信号资源。单击Add Signal Receiver进行添加信号接收器,检视窗口如下图所示。



Add Signal Receiver添加信号接收器有以下行为:

它会添加新的Signal Receiver 组件到关联对象如果信号发射器位于轨道上,该组件会添加到轨道的关联对象。如果信号发射器位于Timeline那么带有PlayableDirector的游戏对象会得到新的Signal Receiver组件。



它会添加新反应,该反应关联着刚创建的信号资源。



我们可以使用Unity Event UI来定义在信号发射器触发时激活的事件。

 

重要的是,Signal Emitter检视窗口首先会先显示与信号发射器相关的属性,它也会显示接收信号的信号接收器。

 

如下图所示,启用Retroactive属性时,如果Timeline开始播放信号时间点后的内容,它会触发信号。启用Emit Once属性时,在Timeline循环播放时,它只会触发信号一次。


使用Signal Receiver信号接收器

现在查看Signal Receiver信号接收器组件,单击带有Signal Receiver组件的游戏对象。

 

 

它会显示我们之前看到的内容,Explosion信号关联着空白的UnityEvent。


 

假设我们想要添加一个新的信号资源,我们可以单击Add Reaction按钮。新的反应添加了,但它未关联任何内容。

 

现在单击下拉列表,选择Create Signal...。



下面是创建新资源的结果。



Signal Receiver组件现在已经设置好,它能在接收Explosion和Load Scene信号时激活反应。

 

如果我们返回到Timeline,可以添加发送Explosion或Load Scene信号的信号发射器,我们也可以轻松切换二个发射器。


如何设置第一个信号

我们需要进行下面的操作:

  • 右键单击支持信号的轨道,选择Add Signal Emitter;

  • 在检视窗口中,单击Create Signal Asset,选择文件名并按下Enter;

  • 在检视窗口中,单击Create Reaction 按钮。

 

这样简单操作后,大功告成。在Unity Event UI中,我们可以设置关联新信号的必要反应。


小结

Unity 2019.1中Timeline Signals信号功能为大家介绍到这里,为这个功能我们等待了很久,希望这一切都值得,后续我们将介绍自定义标记和信号,尽请期待 !

 

更多Unity技术文章分享,尽在Unity Connect平台(Connect.unity.com)。

 

推荐阅读

 

官方活动

Unity GDC 2019 活动日程

3月18-22日GDC 2019将在旧金山举行,了解Unity活动日程信息,请点击此处

Unity GDC 2019官网:

https://unity.com/gdc-2019


Unity客户关怀专享会报名开启

3月15日,Unity将在上海举办Unity客户关怀专享会,此次活动将会为开发者和Unity官方搭建顺畅沟通的桥梁。[了解详情...

报名截至时间:3月11日 8:00

报名链接:https://connect.unity.com/events/2019ShanghaiRoadShow


Unite Shanghai 2019

5月10日-12日上海,Unite大会强势回归。技术门票正在热销中,购票即获指定Asset Store资源商店精品21款资源的5折优惠券。

购票请访问:Unite2019.csdn.net



点击“阅读原文”访问Unity Connect

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存