Unity之Timeline教程

2024-01-24 03:44
文章标签 教程 unity timeline

本文主要是介绍Unity之Timeline教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Unity Timeline是Unity的一种时间轴编辑器工具,用于制作和管理游戏中的动画、剧情以及事件触发。它提供了直观的界面,使得开发者可以通过拖放操作轻松创建和编辑时间轴。
在这里插入图片描述

Timeline的使用

  1. 创建新的Timeline
    在Unity中,选择菜单栏的 Window -> Sequencing -> Timeline 打开Timeline窗口。
    在Hierarchy视图中右键,选择 Create -> Timeline 创建一个新的Timeline对象。

  2. 时间轴基础操作
    添加轨道 (Tracks):在Timeline窗口中右键空白处,选择 Add Tracks,可以添加诸如动画、音频、事件等各种轨道。
    添加关键帧 (Keyframe):在轨道上右键,选择 Add Key,用于设置轨道上物体的不同状态。
    调整时间范围:可以在时间轴的上方调整整个Timeline的时间范围,也可以在轨道上调整各个轨道的时间范围。
    在这里插入图片描述

轨道介绍

Activation Track:用于控制物体的激活状态。可以在轨道上添加关键帧,控制物体的激活和非激活状态。
Animation Track:用于处理物体的动画。可以在此轨道上添加关键帧,编辑物体的动画状态。
Audio Track:用于处理场景中的音频。可以管理音频的播放、暂停、淡入淡出等操作。
Control Track:用于控制在时间轴上放置Prefab,并由Timeline管理Prefab对象的创建与销毁(即,生命周期)。
Playable Track:用于嵌套其他Timeline。可以在此轨道上添加其他Timeline,实现Timeline的嵌套播放。
Signal Track:用于触发自定义的事件。可以在轨道上添加关键帧,触发事件。

自定义轨道

Unity中的TimeLine支持自定义轨道,一般需要新建三个(若需要处理混合则为四个)类。
一、Track
1、用途
首先需要定义一个轨道类,继承TrackAsset,它代表了时间轴内的轨道。官方API

2、代码示例

[TrackColor(0.055f, 0.03f, 0.387f)]
[TrackClipType(typeof(MyClip))]
[TrackBindingType(typeof(Animator))]
public class MyTrack : TrackAsset
{[SerializeField] int blendingDuration = 200;protected override Playable CreatePlayable(PlayableGraph graph, GameObject gameObject, TimelineClip clip){var asset = clip.asset as MyClip;asset.duration = blendingDuration;return base.CreatePlayable(graph, gameObject, clip);}
}

3、轨道类可以被三种特性标签修饰
[TrackColor(float r, float g, float b)]用于定义轨道的颜色,方便不同轨道之间的区分;
[TrackClipType(Type clipClass)]用于指定在轨道中可创建的PlayableAsset类型,可以理解实现了轨道类型和片段类型之间的绑定,同一个轨道可以添加多种不同的片段类型,及可以有多个TrackClipType修饰同一个轨道类;
[TrackBindingType(Type type)]用于指定轨道需要绑定到的对象类型,如示例中的LookAtTrack是用于控制某个角色上的头部动画,因此需要绑定一个角色的Animator组件。若改轨道不需要绑定特定对象,则不需要添加该标签。

4、常用方法

protected override Playable CreatePlayable(PlayableGraph graph, GameObject gameObject, TimelineClip clip)
protected override void OnCreateClip(TimelineClip clip) 在新建片段时调用用于设置Clip的默认值。
public override Playable CreateTrackMixer(PlayableGraph graph, GameObject go, int inputCount)当片段之间支持混合时可添加该方法。

二、Asset
1、用途
接着定义一个继承PlayableAsset、实现接口ITimelineClipAsset的类,用于表示片段资源,该类中可以定义片段包含的字段,这些字段会暴露到Inspector中。

2、代码示例

public class MyClip : PlayableAsset, ITimelineClipAsset
{public string content;public ExposedReference<Transform> target;public DialogueBehaviour template = new MyBehaviour();public ClipCaps clipCaps{get { return ClipCaps.None; }}public override Playable CreatePlayable(PlayableGraph graph, GameObject owner){var playable = ScriptPlayable<MyBehaviour>.Create(graph, template);var myBehaviour = playable.GetBehaviour();myBehaviour.content = content;myBehaviour.target = target;return playable;}
}

3、常用方法
通常该类中会重写CreatePlayable()方法,常用于实现该类和Behaviour类之间的数据传递,关于
ScriptPlayable 和 PlayableBehaviour的使用 可参考 ScriptPlayable 和 PlayableBehaviour

三、Behaviour
1、用途
接着定义一个Behaviour类继承PlayableBehaviour用于描述片段中触发的行为。官方API

2、代码示例

public class MyBehaviour : PlayableBehaviour
{private bool clipPlayed = false;private bool pauseScheduled = false;private PlayableDirector director;public override void OnPlayableCreate(Playable playable){director = (playable.GetGraph().GetResolver() as PlayableDirector);}public override void OnBehaviourPlay(Playable playable, FrameData info){if (!clipPlayed && info.weight > 0f){if (Application.isPlaying) pauseScheduled = true;clipPlayed = true;}}public override void OnBehaviourPause(Playable playable, FrameData info){if (pauseScheduled){pauseScheduled = false;clipPlayed = false;director.Pause();}}
}

这篇关于Unity之Timeline教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/638448

相关文章

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

MySQL Workbench 安装教程(保姆级)

《MySQLWorkbench安装教程(保姆级)》MySQLWorkbench是一款强大的数据库设计和管理工具,本文主要介绍了MySQLWorkbench安装教程,文中通过图文介绍的非常详细,对大... 目录前言:详细步骤:一、检查安装的数据库版本二、在官网下载对应的mysql Workbench版本,要是

通过Docker Compose部署MySQL的详细教程

《通过DockerCompose部署MySQL的详细教程》DockerCompose作为Docker官方的容器编排工具,为MySQL数据库部署带来了显著优势,下面小编就来为大家详细介绍一... 目录一、docker Compose 部署 mysql 的优势二、环境准备与基础配置2.1 项目目录结构2.2 基

Linux安装MySQL的教程

《Linux安装MySQL的教程》:本文主要介绍Linux安装MySQL的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux安装mysql1.Mysql官网2.我的存放路径3.解压mysql文件到当前目录4.重命名一下5.创建mysql用户组和用户并修

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言