Unity TimeLine之Control Track

C#

浏览数:93

2019-8-30

AD:资源代下载服务
前言

Unity 2017 引入了TimeLine功能,引用以下官方描述

Use Unity’s Timeline to create cinematic content, game-play sequences, audio sequences, and complex particle effects.

可以看出,该功能的出现,可以帮助开发者更好地进行基于时序的内容创作。

Track类型

TimeLine工具中的Track类型有以下5种

  • Activation Track
  • Animation Track
  • Audio Track
  • Control Track
  • Playable Track
    其中,前3种类型,官方的文档中都有所提及,相对容易理解,且网上教程也比较多。本文尝试探究下第四种Track类型:Control Track,来尝试解答下这种Track到底控制了什么。
实验准备

注:以下实验中省略了设置Activation Track / Animation Track步骤

首先,我们创建一个简单的场景,放置两个简单人物模型,并为他们创建2个TimeLine。

  • 第一个TimeLine命名MoveToWave,执行后,角色1向前行走2米后,挥手;
  • 第二个TimeLine命名MoveToPickUp,执行后,角色2向前行走2米后,拾取;

    实验准备场景.png
    实验工程Hierachy.png

    两个TimeLine具体设置如下:

    MoveToPickUp.png
    MoveToWave.png

尝试1:播放特效

既然前言中的官方说明已经提及了粒子特效,那我们就尝试下利用Control Track播放特效。

  • 步骤1: 在MoveToWave的TimeLine编辑器中,点击Add按钮,在下拉菜单中选择Control Track,创建一条Control Track

    创建ControlTrack.png

  • 步骤2: 将一个特效预制拖入Control Track

    粒子特效拖入ControlTrack.png

  • 步骤3: 将MoveToWave物件上的组件Playable Director中的Play On Awake选项勾选,表示MoveToWave物件激活时,就开始执行TimeLine

    激活MoveToWave.png

  • 步骤4: 查看执行结果,同时观察Hierachy中粒子特效物件的生命周期

    播放粒子特效.gif
    检查粒子特效物件生命周期.png

结论: Control Track中拖入粒子特效后,该TimeLine会自动创建粒子特效,并在播放结束后,执行删除操作

尝试2: 播放另一个TimeLine
  • 步骤1: 在MoveToWave的TimeLine编辑器中,点击Add按钮,在下拉菜单中选择Control Track,创建一条Control Track,直接将MoveToPickUp物件拖入其中

    TimeLine拖入ControlTrack.png

  • 步骤2: 将场景中MoveToPickUp物件上Playable Director中的Play On Awake选项反选,表示MoveToPickUp上的TimeLine不自动播放,我们让该TimeLine依靠MoveToWave上的Control Track来触发

    反选被触发TimeLine上的Play On Awake.png

  • 步骤3: 查看执行结果

    播放TimeLine.gif

结论: Control Track中拖入另一个TimeLine后,TimeLine会按照时间轴正确处理,衔接触发后续TimeLine

尝试3: 实例化带有TimeLine的预制体

通过实验1和2,我们知道了Control Track可以控制时序的粒子特效以及TimeLine自身。其实,我们发现Control Track在处理粒子特效时,附带了一个功能:管理一个预制体从创建至销毁的生命周期。那我们能不能利用Control Track这个特点,实现一些更加灵活的预制体的创建或销毁呢?现在我们来尝试如下的实验。

  • 步骤1: 制作一个预制体,该预制体上带有TimeLine功能,在该TimeLine中,利用Control Track实例化一个人物角色

    创建带有TimeLine的预制体.png
    利用ControlTrack创建人物角色.png

  • 步骤2: 在MoveToWave的TimeLine上,创建一个Control Track,并拖入步骤1中创建好的预制体Creation

    在ControlTrack拖入预制体Creation.png

  • 步骤3: 查看执行结果

期望结果如下
1. 角色1执行完TimeLine的挥手动作
2. 触发Control Track上的实例化预制体Creation
3. Creation有Play On Awake的TimeLine,在Control Track上执行角色3的实例化,并出生在了原点

ControlTrack实例化预制体.gif

结论: Control Track中完全可以实例化另一个预制体,利用该工具可以有效地控制创建物体的生命周期

实验结束

END

作者:我是糖大大