Unity Animation、Animator 的使用
文章目录
- 1. 添加动画
- 2. Animation
- 2.1 制作界面
- 2.2 制作好的 Animation 动画
- 2.3 添加和使用事件
- 3. Animator
- 3.1 制作界面
- 3.2 一些参数解释
- 3.3 动画参数
- 4. Animator中相关类、属性、API
- 4.1 类
- 4.2 属性
- 4.3 API
- 4.4 几个关键方法
- 5. 动画播放和暂停控制
1. 添加动画
选中待提添加动画的物体, 在 Animation 窗口下
注意:如果选中的物体无Animation/Animator组件,会自动添加Animator组件。

2. Animation
2.1 制作界面

预览:启用/禁用场景预览模式。
录制:启用/禁用关键帧记录模式。
转到动画剪辑开头。
转到上一个 keyframe(关键帧)。
播放动画剪辑。
转到下一个keyframe(关键帧)。
转到动画剪辑末尾。
当前帧。
当前动画名字,下拉可以创建新的Animation动画。
样本,每秒/分的帧数。
添加关键帧。
添加事件。
时间轴。
控制删除属性或增减键。
简报。
曲线。
2.2 制作好的 Animation 动画

| Length | 长度(动画时长) |
|---|---|
| Loop Time | 循环 |
| Loop Pose | 循环动作(使循环时头部尾部衔接平滑) |
| Cycle Offset | 平滑度 |
2.3 添加和使用事件

public class AnimEvents : MonoBehaviour
{private void Start(){// 创建一个事件AnimationEvent evt = new AnimationEvent();// 绑定触发事件后要执行的方法名evt.functionName = "PrintEvent";// 执行方法后要传入的参数evt.intParameter = 12345;// 设置事件关键帧的位置,当事件过了1.3秒后执行evt.time = 0.5f;// 设置目标动画剪辑AnimationClip clip = this.GetComponent<Animator>().runtimeAnimatorController.animationClips[0];// 绑定事件clip.AddEvent(evt);}private void TestAniEvent(string param){Debug.Log("事件触发,参数是:" + param);}private void PrintEvent(int param){Debug.Log(param);}
}
==注意:==脚本和 animator 所在的对象所处同一对象
3. Animator
3.1 制作界面

3.2 一些参数解释
- Solo 和 Mute
当一个动画有多个后续动画时:

当该动画播放完后优先选择动作列表中最前(或者说最上的)的状态转移
Solo:当设置了某个 Transitions 为 Solo 时,那么优先选择标记 Solo 的动画转移
Mute:选择的状态转移被禁用 - ** Has Exit Time**
是否有退出时间。简单理解:开启表示等待当前动画进行完才可进行下一个动画;关闭表示可以立即打断当前动画并播放下一个动画
3.3 动画参数


代码控制:
public class AnimControl : MonoBehaviour
{private Animator anim;private void Start(){anim = this.GetComponent<Animator>();}private void Update(){if (Input.GetKeyDown(KeyCode.R)){anim.SetBool("BoolParams", true);}if (Input.GetKeyDown(KeyCode.S)){anim.SetBool("BoolParams", false);}}
}

4. Animator中相关类、属性、API
4.1 类
AnimationClip: 动画片段,animation
| 属性/方法 | 含义 |
|---|---|
| length | 动画长度,单位为秒。(只读) |
| frameRate | 对关键帧进行采样的帧率。(只读) |
| length / (1 / frameRate) | 总帧率 |
| AddEvent | 将一个动画事件添加到该剪辑中 |
AnimatorStateInfo: 动画状态机状态信息
| 属性/方法 | 含义 |
|---|---|
| fullPathHash | 该状态的完整路径哈希 |
| length | 状态的当前持续时间 |
| normalizedTime | 状态的标准化时间 |
| speed | 该动画的播放速度。1 表示正常播放速度 |
4.2 属性
| 属性 | 含义 |
|---|---|
| speed | 动画器的播放速度。1 为正常播放速度 |
| runtimeAnimatorController.animationClips | 返回所有动画 AnimationClip[] |
4.3 API
| 方法名 | 含义 |
|---|---|
| GetBool | 返回给定布尔参数的值 |
| GetFloat | 返回给定 float 参数的值 |
| GetInteger | 返回给定整数参数的值 |
| SetBool | 设置给定布尔参数的值 |
| SetFloat | 将浮点值发送到动画器以影响过渡 |
| SetInteger | 设置给定整数参数的值 |
| GetCurrentAnimatorClipInfo | 返回给定层当前状态中所有 AnimatorClipInfo 的数组 |
| GetCurrentAnimatorClipInfoCount | 返回当前状态中 AnimatorClipInfo 的数量 |
| GetCurrentAnimatorStateInfo | 返回 AnimatorStateInfo,其中包含有关当前状态的信息 |
| GetNextAnimatorClipInfo | 返回给定层下一个状态中所有 AnimatorClipInfo 的数组 |
| GetNextAnimatorClipInfoCount | 返回下一个状态中 AnimatorClipInfo 的数量 |
| GetNextAnimatorStateInfo | 返回 AnimatorStateInfo,其中包含有关下一个状态的信息 |
| Play | 播放一个状态 |
4.4 几个关键方法
Animator.Play
void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
| Parameters 参数 | Description 描述 |
|---|---|
| stateName | 将要播放的动画状态名字。 |
| layer | 动画状态所在的层。 |
| normalizedTime | 将要播放动画状态的归一化时间(0-1,时间比例值)。 |
5. 动画播放和暂停控制
1. Animotor
// 播放
animator.Play("ani_name");
// 暂停
animator.speed = 0;
// 继续播放
animator.speed = 1;
// 重置到起始帧
animator.Play("ani_name", 0, 0f);
2. Animation
// 播放
animition.Play("ani_name");
// 暂停
animition["ani_name"].speed = 0;
// 继续播放
animition["ani_name"].speed = 1;
// 重置到起始帧
public void ResetAni(Animation ani, string name)
{AnimationState state = ani[name];ani.Play(name);state.time = 0;ani.Sample();state.enabled = false;}
相关文章:
Unity Animation、Animator 的使用
文章目录 1. 添加动画2. Animation2.1 制作界面2.2 制作好的 Animation 动画2.3 添加和使用事件 3. Animator3.1 制作界面3.2 一些参数解释3.3 动画参数 4. Animator中相关类、属性、API4.1 类4.2 属性4.3 API4.4 几个关键方法 5. 动画播放和暂停控制 1. 添加动画 选中待提添加…...
Flink--2、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)
星光下的赶路人star的个人主页 你必须赢过,才可以说不在乎输赢 文章目录 1、Flink部署1.1 集群角色1.2 Flink集群搭建1.2.1 集群启动1.2.2 向集群提交作业 1.3 部署模式1.3.1 会话模式(Session Mode)1.3.2 单作业模式(Per-Job Mod…...
执行Django 的迁移命令报错[1193, Unknown system variable default_storage_engine]
在学习“”编写你的第一个 Django 应用程序,第2部分”时候,遇到一个问题。 执行迁移命令 python manage.py makemigrations polls 后,报错: migrations.py:109: RuntimeWarning: Got an error checking a consistent migration …...
Himall商城-公共方法
目录 1 Himall商城-公共方法 1.1 /// 根据订单id获取订单项 1.2 /// 根据订单项id获取售后记录 1.3 /// 判断订单是否正在申请售后 Himall商城-公共方法 #region 公共方法 public static List<InvoiceTitleInfo> GetInvoiceTitles(long userid) {...
海域可视化监管:浅析海域动态远程视频智能监管平台的构建方案
一、方案背景 随着科技的不断进步,智慧海域管理平台已经成为海洋领域监管的一种重要工具。相比传统的视频监控方式,智慧海域管理平台通过建设近岸海域视频监控网、海洋环境监测网和海上目标探测网络等,可实现海洋管理的数字化转型。 传统的…...
使用Spring Boot + MyBatis实现多数据源
一、引言 在开发中,我们经常会遇到需要连接多个数据库的情况。使用Spring Boot和MyBatis框架可以很方便地实现多数据源的配置和使用。本文将详细介绍如何在Spring Boot项目中使用多数据源。 二、实操 1、添加所需的依赖: <!-- Spring Boot Starte…...
C++中的无限循环
C中的无限循环 while、 do…while 和 for 循环都包含一个条件表达式,在它为 false 时循环结束。如果您指定的条件总是为 true,循环就不会结束。 无限 while 循环类似于下面这样: while(true) // while expression fixed to true {DoSomethi…...
Spark2x原理剖析(二)
一、概述 基于社区已有的JDBCServer基础上,采用多主实例模式实现了其高可用性方案。集群中支持同时共存多个JDBCServer服务,通过客户端可以随机连接其中的任意一个服务进行业务操作。即使集群中一个或多个JDBCServer服务停止工作,也不影响用…...
tomcat安装、部署JSPGOU项目、Tomcat多实例
安装 官网找包 Apache Tomcat - Welcome! tomcat 8 准备运行环境 安装tomcat catalina.sh 服务脚本管理文件 server.xml 主配置文件 修改8009(删除注释) 启动tomcat 访问 为了避免每次进入绝对路径启动tomcat 法二: 三:部署…...
257. 二叉树的所有路径
题目链接: 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 我的想法: 层次遍历不好解,可用找到叶子节点,但是他有一个回溯过程,他要一直保留路径节点,层次迭代不好加回溯。 递归…...
windows10使用wheel安装tensorflow2.13.0/2.10.0
安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的包 注意: tensorflow 2.10.0是最后一个支持GPU的版本 安装虚…...
sql-gen:点击生成SQL、RO、VO的工具
sql-gen仓库地址:码云 Github 1. 概述 sql-gen是一个用于提高后端接口开发效率的小工具,主要有如下功能: 生成连表SQL语句根据WHERE条件来生成封装查询条件的实体类(RO)根据SELECT列来生成封装查询结果的实体类&…...
pytorch从0开始安装
文章目录 一. 安装anaconda1.安装pytorch前需要先安装anaonda,首先进入官网(Anaconda | The Worlds Most Popular Data Science Platform)进行安装相应的版本。2.接着按如图所示安装,遇到下面这个选项时,选择all users.3.选择自己…...
Java 语言实现最小生成树算法(如Prim算法、Kruskal算法)
引言: 在图论中,最小生成树是指一个无向图的生成树,其所有边的权值之和最小。解决最小生成树问题的两种主要算法是Prim算法和Kruskal算法。本文将深入探讨这两种算法并比较它们的优缺点,以帮助读者更好地理解最小生成树算法的原理…...
什么是Linux的Overcommit和OOM
overcommit_memory参数说明: 设置内存分配策略(可选,根据服务器的实际情况进行设置) /proc/sys/vm/overcommit_memory 可选值:0、1、2。 0, 表示内核将检查是否有足够的可用内存供应用进程使用…...
解决防火墙导致虚拟机不能ping通宿主机的问题
今天,无缘无故的,虚拟机突然用不了,网络连上不了,一番折腾翻找,最后才发现,是因为虚拟机ping不同宿主主机了,连网关都ping不通了,但是,宿主主机却可以ping通虚拟机 。 最…...
数据结构:线性表(栈的实现)
文章目录 1. 栈(Stack)1.1 栈的概念1.2 栈的结构链表栈数组栈 2. 栈的定义3. 栈的实现3.1 初始化栈 (StackInit)3.2 入栈 (StackPush)3.3 出栈 (StackPop)3.4 检测栈是否为空 (StackEmpty)3.5 获取栈顶元素 (StackTop)3.6 获取栈中有效元素个数 (StackSize)3.7 销毁栈 (StackDe…...
python如何将一个dataframe快速写入clickhouse
目录 前言思路与核心代码优缺点分析 前言 dataframe是用python做数据分析最场景的数据结构了,如何将dataframe数据快速写入到clickhouse数据库呢?这里介绍几种方法,各有优劣势,可以结合自己的使用场景挑用。 思路与核心代码 假…...
Tiny Player Mac:小而美,音乐播放的极致体验
对于追求音质和操作简便的Mac用户来说,Tiny Player Mac是一款不可多得的音乐播放器。它以简洁的界面、强大的功能和优异的性能,吸引了无数用户的目光。接下来,让我们一起了解这款小而美的音乐播放器。 Tiny Player Mac支持多种音频格式&#…...
2022年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
C/C++编程(1~8级)全部真题・点这里 第1题:漫漫回国路 2020年5月,国际航班机票难求。一位在美国华盛顿的中国留学生,因为一些原因必须在本周内回到北京。现在已知各个机场之间的航班情况,求问他回不回得来(不考虑转机次数和机票价格)。 时间限制:1000 内存限制:65536 …...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
R语言AI模型部署方案:精准离线运行详解
R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
【C++】纯虚函数类外可以写实现吗?
1. 答案 先说答案,可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...
