Timeline以及自定义轨道(对话轨道)

本文介绍了如何在Unity中创建Timeline,添加AnimationTrack处理模型动画、ActivationTrack实现镜头切换,AudioTrack添加背景音乐,以及如何创建自定义对话轨道并配合UI。通过实例演示了关键操作和注意事项,适合游戏开发者和动画爱好者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

创建Timeline

添加Track

添加Animation Track

添加Activation Track

添加Audio Track

添加对话轨道(自定义轨道)


可以同时操作多个模型的动画,(过场动画,电影效果)

创建Timeline

  1. 在window中选择Sequencing=》Timeline打开Timeline窗口

  2. 在场景中创建一个空物体

  3. 选择这个空物体,在Timeline窗口create一个playable文件,此时这个playable文件就和animator一样,是放在空物体上的,同时会给这个空物体一个Playable Director(导演)组件控制场景中其他物体

 

 

添加Track

添加Animation Track

1.分类

1).普通动画

把场景中对象拖拽到Timeline窗口,弹出创建界面选择一个track,选择Animation Track,此时,unity会自动给对象添加一个animator组件,不能删掉(删掉失效)

然后和给对象创建普通animation一样的操作就可以了

2).模型动画

和上面一样的操作,不同的是模型对象自带一个animator,如果timeline没有操控,模型会播放状态机默认的动画

2.操作

动画绘制完毕后,在轨道上右键,有三个需要注意的,一个是Muted、一个是Lock、一个是convert to clip track(转换为编辑轨道)

Muted =》 此轨道动画被禁用

Lock =》 此轨道动画被锁住无法编辑

convert to clip track =》转换为编辑轨道

=》

3.注意

  1. 模型动画播放时,动画可能会在原点播放,原因是本动画本身绘制的时候就在原点,解决方案有两种(推荐第二种)

    1. 脱离的方式是在对应模型的animator组件上挂载一个对应的状态机,并勾选组件上的Apply Root Motion(应用根部运动)

       

    2. 点击对应的轨道

       

      点击方向键

       

      在场景中设置位置

       

添加Activation Track

这个轨道的作用是显示某个对象,可以用于切换摄像机这种

 

 

在轨道中的active时间段这个对象是激活的,超出这个时间段,对象就会被隐藏掉

这个效果可以简单的给场景放两个摄像头轨道,一前一后的active,就可以实现过场动画的摄像头转换

添加Audio Track

上音乐

添加对话轨道(自定义轨道)

详细步骤

1.创建canvas,设置Canvas Scaler组件

设置UI Scale Mode 为 Scale With Screen Size

设置 Reference Resolutioi 的X Y 为1920 1080

2.创建一个对话框,必须包含一个Panel(对话UI界面),一个NameText(讲话人的Text),一个DialogueLineText(说话的Text),一个SpaceBarText(一个显示是否按空格的Text

 

 

3.导入根目录中的script文件夹到项目中

链接:https://pan.baidu.com/s/11px2nw71hi5Zpjr72qC_bw 
提取码:d3g5

 

4.加载UIManagerV,在场景中创建一个空物体,取名UIManager,放入脚本UIManagerV

 

将刚刚对应的对象放入Manager中

 

为了使自定义轨道上的Clip可以操纵UI

5.加载GameManagerV,在场景中创建一个空物体,取名GameManager,放入脚本GameManagerV

 

 

6.创建 Dialogue Track V

 

7.添加DialogueClip

 

8.设置Clip就可以啦

 

 

Require Pause 是指这个Clip结束的时候需要空格继续播放吗,勾选了,到时候播放完这段Clip,Timeline就会暂停,需要按下空格继续

### 创建自定义轨道以控制 Unity Timeline 中的 Fog 效果 在 UnityTimeline 系统中,可以通过创建自定义轨道来实现对雾效(Fog)的动态控制。这不仅能够增强场景的真实感,还能为游戏或动画增添更多视觉效果。 #### 定义自定义轨道类 为了使 Timeline 支持特定于 Fog 控制的功能,需先编写一个继承 `TrackAsset` 类的新脚本: ```csharp using UnityEngine; using UnityEngine.Playables; [TrackClipType(typeof(FogControlPlayable))] public class FogControlTrack : TrackAsset { public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount) { return ScriptPlayable<FogControlMixerBehaviour>.Create(graph); } } ``` 此代码片段展示了如何通过扩展 `TrackAsset` 来构建一个新的轨道类型[^1]。 #### 实现混合器行为 接着要设计一个用于处理多个剪辑输入并决定最终输出的行为逻辑——即所谓的“混音器”。这里采用的是 `PlayableBehaviour` 抽象基类的一个子类形式: ```csharp using UnityEngine; using UnityEngine.Playables; public class FogControlMixerBehaviour : PlayableBehaviour { private Color startColor; private float densityStartValue; public void Initialize(Color color,float density){ this.startColor=color; this.densityStartValue=density; } public override void PrepareFrame(Playable playable, FrameData info) { var director = (TimelineDirector)playable.Getagraph().GetResolver(); RenderSettings.fogColor = EvaluateColor(playable); RenderSettings.fogDensity = EvaluateDensity(playable); } private Color EvaluateColor(Playable playable) { /* ... */ } private float EvaluateDensity(Playable playable){/*...*/} } ``` 上述代码实现了基本框架,在实际应用时还需要补充具体的评估函数 `EvaluateColor()` 和 `EvaluateDensity()`, 这些方法负责计算当前帧下应呈现的颜色和密度值[^2]。 #### 设计可播放对象 最后一步是制作可以被放置到时间轴上的具体事件实例化模板 —— 即 “clip”,它同样基于 `PlayableBehaviour` 构建而成: ```csharp using UnityEngine; using UnityEngine.Timeline; using UnityEngine.Playables; [TimelineClip(Type = typeof(FogControlClip))] public class FogControlPlayable : PlayableBehaviour { [SerializeField] AnimationCurve fogDensityOverTime; // 雾浓度随时间变化曲线 [SerializeField] Gradient fogColorOverTime; // 雾颜色渐变设置 public override void ProcessPlayble(Playable playable, FrameData info, object playerData) { Camera camera = playerData as Camera; if (!camera) return ; float timeNormalized = Mathf.Clamp01((float)(playable.GetTime()/playable.GetDuration())); RenderSettings.fogColor=fogColorOverTime.Evaluate(timeNormalized); RenderSettings.fogDensity= fogDensityOverTime.Evaluate(timeNormalized); } } ``` 这段 C# 脚本允许开发者指定两个属性:一个是描述整个期间内雾浓度过程的 `AnimationCurve`; 另一个是表示色彩过渡过程的 `Gradient`. 当这些参数随着序列进度而改变时,就会相应调整全局渲染设定中的 Fog 参数[^3]. 完成以上三部分开发工作之后,便可以在编辑器界面里轻松地向任何 timeline 添加此类特殊用途的轨道,并利用其内置工具直观地配置所需的效果特性.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值