当前您所在的位置:首页>新闻中心>行业动态>

Unity 2019.1新功能:Timeline Signals!

发布时间:2019/06/04 浏览量:897

前言:自从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事件和动画事件。

 

1、如何添加Signal Emitter信号发射器

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

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

 

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

 

2、工作原理

为了在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中,我们可以设置关联新信号的必要反应。

北京哲想软件有限公司