链接:https://blog.csdn.net/beihuanlihe130/article/details/79233320

以下为旧版本TimeLine,新版本功能介绍可以看这里

Timeline是Unity2017版本中新加入的功能,可以非常方便的进行场景动画的创建和修改,包括物体、声音、粒子、动画、特效、自定义Playable以及子Timeline等多种资源进行整合,从而能够较方便的生成效果很棒的场景动画,同时可以通过Unity的Recorder资源包录制较为完整的视频并导出。

1.Timeline界面简单介绍

Unity2017中,点击Window->Timeline即可调出Timeline面板。如下图所示:

在该面板中,可以创建多种类型的片段,如果你导入AssetStore中的Default Playables资源包(其中预置了多个官方提供的简单Playable实例),其面板如下所示:

其中常用的主要有

当我们创建了TimeLine后,会在指定位置生成TimeLine的文件*.playable,当选中该文件后,会在Inspector面板中看到其相应的属性,如下图所示:

其中Frame Rate可以设置该Timeline每秒钟播放多少帧动画。Duration Mode分为Based On Clips和Fixed Length两种模式,Based On Clips模式为按照帧数来播放,当播放到最后一帧时结束播放,Fixed Length模式可以设置总共播放多长时间,当播放到指定时间是停止。Duration设置当前播放的秒数和帧数。

2.Timeline轨道简单介绍

2.1 Activation Track


该轨道首先需要为其赋值一个GameObject,表示该轨道控制该物体的显示与隐藏,当在Timeline播放过程中,如果处于片段内部,则该物体显示,否则该物体隐藏。

当我们点击该轨道时,会在Inspector面板中看到可以设置的属性,如下所示:

2.2 Animation Track

Animation Track主要控制动画的播放,包括动画片段、帧动画等。当我们点击Animation Track时,可以设置其属性,如下图所示:

2.2.1 Animation Track 属性

2.2.2 动画轨道使用简介

1.添加Animation Clip
右击Animation Clip的空白处,选择Add From Animation Clip即可从已有的动画片段中选择。

可以拖拽动画片段调整播放的时间,同时也可以将多个动画片段进行叠加来完成动画过渡效果。

2.录制动画
可以在Animation Clip中点击红色按钮进行录制,通过设置不同的属性来为物体设置关键帧,从而完成不同类型的动画制作。

3.设置曲线
录制的动画可以在动画窗口中打开,在动画窗口中可以通过关键帧点的方式进行控制,也可以通过曲线的方式进行控制。

2.3 Audio Track

Audio Track主要控制动画中的音效,可以设置声音的起始时间、结束时间、淡入时间、淡出时间、播放速度、不同音效间的混合效果、是否循环播放等。其属性如下所示:

2.4 Control Track

Control Track主要控制与时间有关的元素,如粒子效果、嵌套子Timeline等。
该轨道可以在指定的父物体下实例化一个Prefab,并对该Prefab中与时间有关的元素进行播放操作。

2.5 Playable Track

Playable Track允许用户自定义相关动画效果,在Default Playables资源包中包含了一部分自定义的功能轨道,包括文字、时间、灯光、位置、寻路、淡入淡出等效果,用户也可以根据自己的需要进行定制化开发,以实现更加复杂的效果。
用户可以在代码中继承PlayableBehaviour和PlayableAsset两个类,在其中完成自定义的动画功能。

/// <summary>
///该类主要实现在TimeLine的PlayableTrack中显示我们定义的功能,并完成赋值
/// </summary>
public class PlayableBehaviourSample : PlayableAsset
{//使用ExposedReference进行赋值操作public ExposedReference<GameObject> ShowNumberText;private Text text;public int startNum;public override Playable CreatePlayable(PlayableGraph graph, GameObject owner){PlayableTest beha=new PlayableTest();//从ExposedReference中获取我们需要的控件text = ShowNumberText.Resolve(graph.GetResolver()).GetComponent<Text>();//对指定的PlayableBehaviour中的属性进行赋值scriptPlayable.GetBehaviour().ShowNumberText = text;scriptPlayable.GetBehaviour().StartNum = startNum;var scriptPlayable = ScriptPlayable<PlayableTest>.Create(graph,beha);return scriptPlayable;}
}/// <summary>
/// 读秒功能
/// </summary>
public class PlayableTest : PlayableBehaviour
{//显示文字的控件public Text ShowNumberText;public int StartNum;float time;int currentNum;/// <summary>/// 当该PlayableBehaviour的PlayableGraph启动时调用/// </summary>/// <param name="playable"></param>public override void OnGraphStart(Playable playable){base.OnGraphStart(playable);Debug.Log("OnGraphStart Called");currentNum = StartNum;ShowNumberText.text = "Start Number Is " + StartNum;Debug.Log(ShowNumberText.text);}/// <summary>/// 当该PlayableBehaviour的PlayState转换为PlayState.Play时调用/// </summary>/// <param name="playable"></param>/// <param name="info"></param>public override void OnBehaviourPlay(Playable playable, FrameData info){base.OnBehaviourPlay(playable, info);Debug.Log("OnBehaviourPlay Called");}/// <summary>/// 该函数与ProcessFrame函数功能相同,都是在该PlayableBehaviour播放的每一帧中调用,相当于Update函数的功能/// </summary>/// <param name="playable"></param>/// <param name="info"></param>public override void PrepareFrame(Playable playable, FrameData info){base.PrepareFrame(playable, info);Debug.Log("PrepareFrame Called");time += Time.deltaTime;if (time > 1.0f){currentNum++;ShowNumberText.text = "Current Number Is " + currentNum;Debug.Log(ShowNumberText.text);time -= 1.0f;}}/// <summary>/// 该函数与PrepareFrame函数功能相同,都是在该PlayableBehaviour播放的每一帧中调用,相当于Update函数的功能/// </summary>/// <param name="playable"></param>/// <param name="info"></param>/// <param name="playerData"></param>public override void ProcessFrame(Playable playable, FrameData info, object playerData){base.ProcessFrame(playable, info, playerData);Debug.Log("ProcessFrame Called");}/// <summary>/// 该函数在PlayableBehaviour片段的PlayState转换为Delay时调用/// </summary>/// <param name="playable"></param>/// <param name="info"></param>public override void OnBehaviourDelay(Playable playable, FrameData info){base.OnBehaviourDelay(playable, info);Debug.Log("OnBehaviourDelay Called");}/// <summary>/// 该函数在PlayableBehaviour片段的PlayState转换为Pause时调用/// </summary>/// <param name="playable"></param>/// <param name="info"></param>public override void OnBehaviourPause(Playable playable, FrameData info){base.OnBehaviourPause(playable, info);Debug.Log("OnBehaviourPause Called");ShowNumberText.text = "End Number Is " + currentNum;Debug.Log(ShowNumberText.text);}/// <summary>/// 该函数在PlayableBehaviour片段停止播放时调用/// </summary>/// <param name="playable"></param>public override void OnGraphStop(Playable playable){base.OnGraphStop(playable);Debug.Log("OnGraphStop Called");}/// <summary>/// 该函数在PlayableBehaviour片段创建时调用/// </summary>/// <param name="playable"></param>public override void OnPlayableCreate(Playable playable){base.OnPlayableCreate(playable);Debug.Log("OnPlayableCreate Called");}/// <summary>/// 该函数在PlayableBehaviour片段销毁时调用/// </summary>/// <param name="playable"></param>public override void OnPlayableDestroy(Playable playable){base.OnPlayableDestroy(playable);Debug.Log("OnPlayableDestroy Called");}/// <summary>/// 该函数在PlayableGraph的PrepareData阶段被调用/// </summary>/// <param name="playable"></param>/// <param name="info"></param>public override void PrepareData(Playable playable, FrameData info){base.PrepareData(playable, info);Debug.Log("PrepareData Called");}
}

以下为运行后的调用顺序

以下为该Timeline设置的状态,主要部分为PlayableTrack。

最终运行效果如下:

该方法也可通过继承BasicPlayableBehaviour类完成,但是在未来的版本中该类可能会被PlayableBehaviour和PlayableAsset类取代(已经弃用)。

Unity.TimeLine相关推荐

  1. Unity - Timeline 自定义剪辑,轨道,混合轨道,Inspector属性显示(使用Default Playables辅助工具)

    Timeline中,可以通过脚本扩展自定义的剪辑,轨道,混合轨道,Inspector属性显示器. 我这里参考了官方的 Default Playables的一个节点扩展方式,它也提供了一个辅助工具,非常 ...

  2. Unity - Timeline 之 Muting tracks(屏蔽轨道)

    目录:Unity - Timeline 知识汇总 原味:https://docs.unity3d.com/Packages/com.unity.timeline@1.2/manual/trk_mute ...

  3. Unity - Timeline 之 Panning and zooming the Clips view(移动与缩放Clip剪辑视图)

    目录:Unity - Timeline 知识汇总 原味:https://docs.unity3d.com/Packages/com.unity.timeline@1.2/manual/clp_pan_ ...

  4. Unity Timeline运行时脚本控制Mute和UnMute(Mute/UnMute a timeline track via scripting)

    Unity Timeline运行时脚本控制Mute和UnMute 最近遇到了一个问题就是希望能够在运行时脚本控制Timeline特定轨道的mute和unmute,本来以为是一个很简单的问题,结果发现并 ...

  5. Unity - Timeline 之 Splitting clips(分离剪辑)

    目录:Unity - Timeline 知识汇总 原文:https://docs.unity3d.com/Packages/com.unity.timeline@1.2/manual/clp_spli ...

  6. unity Timeline控制动画的播放

    unity Timeline控制动画的播放 创建一个空物体GameObject,添加Playable Director组件,添加脚本组件: 新建一个长方体: 创建timeline并将其拖到空物体的Pl ...

  7. 3D软件视频制作:unity timeline cinemachine, blender 视频制作编辑器

    刚开始记录先把自己的用到的网站记录一下 文章目录 最开始的尝试,混乱的记录 子问题解决 多个cinemachine 编排,并且指定某个时间开始播放 blender 音乐动画同时播放 最开始的尝试,混乱 ...

  8. Unity TimeLine使用教程

    我使用的是Unity 2020.3.25,TimeLine版本是1.5.2. TimeLine可以添加以下几种Track 1.Activation Track一般用来控制GameObject的显示和隐 ...

  9. [Unity][TimeLine][Unity功能]TimeLine系统能做什么--游戏剧情动画系统

    TimeLine系统能做什么,给游戏加分,简化 游戏剧情动画 的工作量,提高 游戏剧情动画 的效率. 也可以做像拳皇,街头霸王,生与死,等 类似的 格斗游戏.胜利特效,KO特效. 体育类型,街头篮球, ...

  10. Unity TimeLine使用详解 (自认为)

    1.打开TimeLine Windows -->Sequencing -->TimeLine 2.TimeLine可以添加多种机制 1.类似创建一个文件夹 2.可以将Hierarchy面板 ...

最新文章

  1. HTTP协议通信原理 (资源)
  2. EasyUI Pagination 分页的两种做法
  3. MATLAB画高斯曲线
  4. 二叉树的遍历:前序、中序、后序、层次遍历(仅例题)
  5. Shopify 入门 (英文)
  6. 使用Linux命令行测试网速
  7. spring boot项目自定义数据源,mybatisplus分页、逻辑删除无效解决方法
  8. linux 网络管理
  9. python中布尔值是什么意思_python中的布尔值是什么
  10. android 大牛播放组件,大牛播放器安卓版_大牛播放器好不好用
  11. 【MySQL】轻松学习 唯一索引
  12. day02 约束、数据库设计、多表查询、事务
  13. git语法大全(值得收藏)
  14. 春季养生知识多 吃萝卜可预防上火
  15. 守望先锋服务器修改,守望先锋开发者访谈:关于自定义的服务器
  16. 为什么那么多公司都选择灵活用工?
  17. 《深入理解计算机系统》第一章
  18. android 设置EditText可输入和不可输入状态
  19. cap理论具体含义_CAP理论中的P到底是个什么意思?
  20. 信号与系统(13)- 傅里叶变换的性质

热门文章

  1. Pocket PC 2003 PC网卡上网设置
  2. matlab怎么计算行列式,MATLAB计算行列式
  3. c语言中int类型的范围,C语言int的取值范围?
  4. 生成的exe程序默认以管理员权限启动
  5. 过孔在覆铜后不出现十字孔
  6. Java+spring+springmvc 基于ssm的超市进销存管理系统#毕业设计
  7. 网络安全架构与域划分(企业安全)
  8. 轻型异常在线检测器LODA:Lightweight on-line detector of anomalies
  9. 视频播放插件AVPro1-插件介绍
  10. Kafka单节点安装部署