Unity版本号:2019.3.0f6


TimeLine 是unity2017推出的新功能,其采用时间线的形式组合场景资源, 可以用于编排游戏剧情,过场动画,斩杀镜头,人物特写等效果。

创建TimeLine

用于播放TimeLine的物体必须有这个组件:

参数名 作用
Playable Playable资源(TimeLine资源)
Update Method 更新模式
Play On Awake 是否启动时自动播放
Wrap Mode 结束模式,None播放完回到原先属性,Loop循环播放,Hood播放完维持改变
Initial Time 延迟时间

轨道面板


点击左侧的+,可以添加轨道,这是一个类似视频剪辑的界面,我们可以方便的对轨道进行移动和剪辑。

Activation

Activation用于表示物体的激活状态:

Animation

Animation用于播放动画,既可以播放已有的动画,也可以自己录制帧动画来使用。
注意:使用此轨道的物体会被创建一个Animator Controller,这个组件不能被删除。

Audio

Audio轨道用于播放音效,如果不指定AudioSource就无法细致调节效果。

每个轨道在属性面板都有不同的属性,Audio面板如下:

Control

Control轨道和Activation轨道有点相似,但不同的是Control轨道可以同时控制多个物体的激活状态。

Signal-任意轨道

Signal是非常重要的轨道,在使用TimeLine时,你可能会有这样的想法,能不能在时间线上,调用我们自定义的方法呢,在2019之前可以通过剪辑间接的完成事件的调用;但现在有了Signal轨道的加持,我们可以非常方便的在任意时刻调用方法了。
创建一个简单的测试脚本,并将脚本挂载在游戏物体上。

public class SignalTest : MonoBehaviour
{
   public void Show()
   {
      Debug.Log("Signal!");
   }
}

右键单击任意轨道:

此时在属性面板中,可以看到:

为了监听这个事件,unity提示我们缺少一个监听器,点击Add添加一个。
添加好监听器,我们需要创建一个监听实例,这个实例是可以复用的。

完成以上步骤我们发现原先有警告的小白标变成了白色。这说明我们设置正确了,然后我们需要绑定事件给实例:

尝试运行(播放游戏)一下发现在时间轴运行到小白标时会自动调用我们绑定的方法。

Signal-指定轨道

上面实现的Signal是针对于任意轨道来说的,如果我们需要很多的Signal处理起来可能会发生混乱,所以官方提供了专门的Signal轨道。
先给我们的物体添加:

在属性面板中我们可以对事件实例绑定多个方法,统一管理:

小技巧

在轨道左侧可以点击三点,然后选择Mute(静音)对指定轨道进行屏蔽。
在右侧轨道面板中,可以通过重叠区块实现2个区块之间的过渡效果。
可设置轨道的淡入淡出效果:

驱动摄像机

做了一个超级丑的摄像机变换效果:

代码驱动TimeLine

有时候我们可能需要通过代码动态的启动TimeLine,这也很容易实现:

public class Signal : MonoBehaviour
{
    public PlayableDirector playDir;

    public void Fac()
    {
        Debug.Log("Fac..");
    }


    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            print("A");
            playDir.Play();
        }
    }
}