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();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Spring Boot中整合MyBatis

第1步&#xff1a;添加依赖&#xff1a; 在pom.xml文件中添加MyBatis和MySQL JDBC驱动的依赖。如果你使用的是Maven&#xff0c;配置如下&#xff1a; <dependencies><!-- Spring Boot Starter Data JPA 可能已经包含了 spring-boot-starter-data-jdbc --><dep…

云计算入门——Linux 命令行入门

云计算入门——Linux 命令行入门 前些天发现了一个人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;最重要的屌图甚多&#xff0c;忍不住分享一下给大家。点击跳转到网站。 介绍 如今&#xff0c;我们许多人都熟悉计算机&#xff08;台式机和笔记本电…

Ant Design Vue详解a-tree-select使用树形选择器,递归渲染数据,点击选项回显,一二级菜单是否可选等问题

后台给的树形数据&#xff1a; {"code": 200,"data": [{"code": "jsd","children": [{"code": "hx","children": [],"name": "航向","id": 8,"libTable…

《WebKit 技术内幕》学习之十一(3):多媒体

3 音频 3.1 音频元素 说完视频之后&#xff0c;接下来就是HTML5中对音频的支持情况。音频支持不仅指对声音的播放&#xff0c;还包括对音频的编辑和合成&#xff0c;以及对乐器数字接口&#xff08;MIDI&#xff09;等的支持&#xff0c;下面逐次介绍并分析它们。 3.1.1 H…

代码随想录算法训练营第36天 |435. 无重叠区间 763.划分字母区间 56. 合并区间

目录 435. 无重叠区间 &#x1f4a1;解题思路 &#x1f4bb;实现代码 763.划分字母区间 &#x1f4a1;解题思路 &#x1f4bb;实现代码 56. 合并区间 &#x1f4a1;解题思路 &#x1f4bb;实现代码 435. 无重叠区间 题目链接&#xff1a;435. 无重叠区间 给定一个…

一文讲透Redis的LRU与LFU算法实现

深入解析Redis的LRU与LFU算法实现 一、前言 Redis是一款基于内存的高性能NoSQL数据库&#xff0c;数据都缓存在内存里&#xff0c; 这使得Redis可以每秒轻松地处理数万的读写请求。 相对于磁盘的容量&#xff0c;内存的空间一般都是有限的&#xff0c;为了避免Redis耗尽宿主…

【Go面试向】Go程序的执行顺序

【Go】Go程序的执行顺序 大家好 我是寸铁&#x1f44a; 总结了一篇Go程序的执行顺序的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; Go程序内容 go程序通常包含: 包、常量、变量、init()、main()等元素 下面从这几个方面分别去梳理&#xff01; 包的执行顺序 程序中的包 …

Linux系统常用命令行指令

Linux系统是一种常用于开源项目开发的生产环境&#xff0c;因其免费、开源、安全、稳定的特点被广泛应用于手机、平板电脑、路由器、电视和电子游戏机等嵌入式系统中&#xff0c;能够更加简便地让用户知道系统是怎样工作的。前几日我安装好了Red Hat Enterprise Linux 9.0&…

Linux的常见指令和基本操作演绎【复习篇章一】

文章目录 前言下载安装 XShellXShell 下的复制粘贴热键操作01.ls指令tree 02.cd指令03.touch指令04.mkdir指令&#xff08;重要&#xff09;&#xff1a;05.rmdir指令 && rm 指令&#xff08;重要&#xff09;06.组合07.man指令&#xff08;重要&#xff09;&#xff1…

SpringMVC:企业级解读(二)

目录 八. 构建卓越JavaWeb应用&#xff1a;最佳实践与性能优化 1. 代码组织与规范 2. 全局异常处理与日志记录 3. 性能优化与安全性考虑 4. 分布式应用 5. 提高Spring MVC的开发效率和代码质量 九. 构建卓越用户体验&#xff1a;Themes 与 UI 组件集成 1. 主题与CSS预处…

《WebKit 技术内幕》学习之十一(4):多媒体

4 WebRTC 4.1 历史 相信读者都有过使用Tencent QQ或者FaceTime进行视频通话的经历&#xff0c;这样的应用场景相当典型和流行&#xff0c;但是基本上来说它们都是每个公司推出的私有产品&#xff0c;而且通信等协议也都是保密的&#xff0c;这使得一种产品的用户基本上不可能…

SpringBoot应用开发的jar包,怎样在服务器重启情况下,自启动,从而实现远程无人值守

1.编写启动脚本用于jar # 1、vim创建脚本vim startup.sh# 2、命令行模式下输入i# 3、添加以下内容 #!/bin/bashnohup java -Xms2048m -Xmx2048m -Xmn1024m -Xss1024k -Dfile.encodingUTF-8 -server -XX:HeapDumpOnOutOfMemoryError -jar XXX-api-1.0.0.jar > XXX-api.log 2…

【时间序列篇】基于LSTM的序列分类-Pytorch实现 part3 化为己用

系列文章目录 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part1 案例复现 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part2 自有数据集构建 【时间序列篇】基于LSTM的序列分类-Pytorch实现 part3 化为己用 在一个人体姿态估计的任务中&#xff0c;需要用深度学习模型…

Ubuntu 常用命令、docker 常用命令、unzip常用命令、tar常用命令

ubuntu 常用命令&#xff1a; 进入管理员模式&#xff1a; sudo su退出管理员模式&#xff1a; su <用户名>重启系统&#xff1a; rebootubuntu 复制文件夹下文件到其他文件夹下 cp -r source_folder/* destination_folder/删除文件夹下内容而不删除自身(进入到目录…

天天酷跑-C语言搭建童年游戏(easyx)

游戏索引 游戏名称&#xff1a;天天酷跑 游戏介绍&#xff1a; 本游戏是在B站博主<程序员Rock>的视频指导下完成 想学的更详细的小伙伴可以移步到<程序员Rock>视频 【程序员Rock】C语言项目&#xff1a;手写天天酷跑丨大一课程设计首选项目&#xff0c;手把手带你用…

【linux】Debian挂起和休眠

一、挂起和休眠 在Debian桌面系统中&#xff0c;挂起和休眠是两种不同的状态&#xff0c;它们之间有一些区别。 挂起&#xff08;Suspend&#xff09;是将当前系统的状态保存到RAM&#xff08;内存&#xff09;中&#xff0c;然后关闭所有硬件设备&#xff0c;除了RAM之外。在…

如何用H5+CSS+JS写一个简单的招聘网站

大家好&#xff0c;我是猿码叔叔&#xff0c;一个 Java 语言开发者。应网友要求&#xff0c;写一个简单的招聘页面。由于技术原因&#xff0c;页面相对简单&#xff0c;朋友们可以选择性的阅读&#xff0c;如果对您有帮助&#xff0c;也可直接拿去使用&#xff0c;因为接下来除…

数据分析的理念、流程、方法、工具(下)

四、用户分群 1、用户分群 用户分群是精细化运营的基础要求&#xff0c;也是数据分析的最基础方式。对用户进行分群&#xff0c;能帮助我们了解每个细分群体用户的变化情况&#xff0c;进而了解用户的整体现状及发展趋势。同时&#xff0c;由于运营资源本身有限&#xff0c;不…

动态数据源dynamic-spring-boot-starter

将数据库相关依赖引入 <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter…

满意度调研需要注意什么

本文由群狼调研&#xff08;长沙食堂满意度调查&#xff09;出品&#xff0c;欢迎转载&#xff0c;请注明出处。满意度调研是一种市场调查方法&#xff0c;用于了解顾客对产品或服务的满意程度。通过满意度调研&#xff0c;企业可以找到影响顾客满意度的关键因素&#xff0c;以…