【零基础入门unity游戏开发——动画篇】unity旧动画系统Animation组件的使用
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了
C#篇、unity通用篇、unity3D篇、unity2D篇。
- 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
- 【unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
- 【unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
- 【unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。
这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。
前言
1、什么是老动画系统?
Unity中有两套动画系统:
| Legacy Animation System(老系统) | Mecanim Animation System(新系统) | |
|---|---|---|
| 组件类型 | Animation组件 | Animator组件 |
| 动画控制方式 | 线性动画片段直接播放 | 状态机驱动动画逻辑 |
| 版本支持 | Unity 4及更早版本原生支持 | Unity 4开始引入(当前主流) |
| 动画资源格式 | .anim 动画片段 | 支持.anim与更复杂的动画控制器.controller |
| 骨骼系统 | 基础骨骼支持 | 完善的人形动画重定向系统 |
值得注意的是,随着unity更新老动画系统已经逐渐被淘汰了,目前可能主要用于处理老版本项目和简单的一些自制动画。新项目已经不建议大家使用了,所以这部分内容大家作为了解就行。
2、老动画系统控制动画播放
注意
在创建动画之前为对象添加Animation组件之后再制作动画。
这时制作出的动画和之前的动画格式是有区别的。
老动画系统创建Animation前要给生成动画的对象添加Animation脚本,挂载过后Unity就会认为这个对象要使用老动画系统。

挂载过会按老套路在Animation窗口新建Animation动画,选择文件夹存储。

因为对象添加了Animation组件,创建后Unity不会自动创建Animator文件并且给对象添加Animator组件。只会把新创建的Animation文件和Animation组件关联。Animation窗口上的操作和之前一模一样。

要注意老版本创建出来的Animation文件上的参数和新版本是不同的。
一、老Animation组件参数

| 介绍 | |
|---|---|
| Animation动画 | 默认播放的动画。 |
| Animations | 该动画组件可以控制的所有动画,对对象新创建老版本的Animation后会自动添加关联到这里。 |
| Play Automatically | 是否一开始就自动播放默认动画。 |
| Animate physics | 动画是否与物理交互。 |
| Animate physics | 是否用物理方式驱动动画 |
| Culling type | 决定什么时候不播放动画;Always Animate:始终播放。Based On Renderers:基于渲染的方式执行,动画离开屏幕了就不再执行,节省性能 |
二、老Animation文件参数

- Default:读取设置得更高的默认重复模式。
- Once:播放一次就停止。
- Loop:从头到尾不停循环播放。
- ClampForever:播放结束会停在最后一帧,并且会一直播放最后一帧(相当于状态不停止),表现效果和Once一样,但是逻辑处理上不同。
- PingPong:从头到尾从尾到头不停播放。
三、老Animation动画系统代码控制
1、得到Animation组件
要把脚本挂载到对象上,用脚本得到Animation组件
private Animation animation;void Start()
{animation = this.GetComponent<Animation>();
}
2、播放动画
Animation.Play方法
//Animation的Play方法 播放动画
//播放没有混合的动画。
//会直接生硬的切换动画 假如播放到一半切换动画 回强行停止第一个播放的动画 切换到第二个播放动画的初始状态 进行播放
if (Input.GetKeyDown(KeyCode.Alpha1))
{animation.Play("1");
}
if (Input.GetKeyDown(KeyCode.Alpha2))
{animation.Play("2");
}
3、淡入播放,自动产生过渡效果
Animation.CrossFade方法
//Animation的CrossFade方法 淡入播放,自动产生过渡效果
//在后续 time 秒的时间段内,使名称为 animation 的动画淡入,使其他动画淡出。
//会先淡出把状态慢慢变成要播放的动画的初始在状态,再播动画
if (Input.GetKeyDown(KeyCode.Alpha3))
{//当你要播放的动画的开始状态 和当前的状态 不一样时 //就会产生过渡效果animation.CrossFade("3");//animation.Play("3");
}
4、前一个播完直接再播放下一个
Animation.PlayQueued方法
//Animation的PlayQueued方法 前一个播完直接再播放下一个
//在先前的动画播放完毕后再播放动画。
//可以理解为把动画加到队列中 等上一个动画播放完再播 会生硬的切换初始状态
if (Input.GetKeyDown(KeyCode.Alpha4))
{animation.PlayQueued("2");
}
5、前一个播完淡入播放下一个
Animation.CrossFadeQueued方法
//Animation的CrossFadeQueued方法 前一个播完淡入播放下一个
//使动画在上一个动画播放完成后交叉淡入淡出。
//可以理解为把动画加到队列中 等上一个动画播放完再播 会先淡出把状态慢慢变成要播放的动画的初始在状态,再播动画
if ( Input.GetKeyDown(KeyCode.Alpha5) )
{animation.CrossFadeQueued("2");
}
6、停止播放所有动画
Animation.Stop方法
//Animation的Stop方法 停止播放所有动画
//停止所有使用该动画启动的正在播放的动画。
//animation.Stop();
7、是否在播放某个动画
Animation.IsPlaying方法
//Animation的IsPlaying方法 是否在播放某个动画
//名称为 name 的动画是否正在播放?
if ( animation.IsPlaying("1") )
{}
8、播放模式设置
Animation.wrapMode变量
//Animation的wrapMode变量 播放模式设置
//应如何处理超出此剪辑播放范围的时间?
//可以进去看枚举
//animation.wrapMode = WrapMode.Loop;//设置成循环播放
9、其它
层级和权重以及混合(老动画系统需要通过代码来达到动画的遮罩、融合等效果)
//设置层级
animation["1"].layer = 1;
//设置权重
animation["1"].weight = 1;
//混合模式 叠加还是混合
animation["1"].blendMode = AnimationBlendMode.Additive;
//设置混组相关骨骼信息
animation[""].AddMixingTransform();
四、实战
修改动画为循环,并拖入绑定动画

通过代码方式播放动画

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Animation : MonoBehaviour
{void Start(){}void Update(){//点击鼠标左键开始播放动画if (Input.GetMouseButtonDown(0)){//播放为right的动画片段GetComponent<Animation>().Play("right");}}
}
专栏推荐
| 地址 |
|---|
| 【零基础入门unity游戏开发——C#篇】 |
| 【零基础入门unity游戏开发——unity通用篇】 |
| 【零基础入门unity游戏开发——unity3D篇】 |
| 【零基础入门unity游戏开发——unity2D篇】 |
| 【制作100个Unity游戏】 |
| 【推荐100个unity插件】 |
| 【实现100个unity特效】 |
| 【unity框架/工具集开发】 |
完结
好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
相关文章:
【零基础入门unity游戏开发——动画篇】unity旧动画系统Animation组件的使用
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、…...
Python+AI提示词用贝叶斯样条回归拟合BSF方法分析樱花花期数据模型构建迹图、森林图可视化
原文链接:https://tecdat.cn/?p41308 在数据科学的领域中,我们常常会遇到需要处理复杂关系的数据。在众多的数据分析方法中,样条拟合是一种非常有效的处理数据非线性关系的手段。本专题合集围绕如何使用PyMC软件,对樱花花期数据进…...
记一个.NET AOT交叉编译时的坑
记一个.NET AOT交叉编译时的坑 背景: 使用.NET9开发的Avalonia项目需要部署到Linux-arm64 踩坑: 根据官方AOT交叉编译文档配置后执行打包 dotnet publish -r linux-arm64提示error : The PrivateSdkAssemblies ItemGroup is required for _ComputeA…...
消息中间件对比与选型指南:Kafka、ActiveMQ、RabbitMQ与RocketMQ
目录 引言 消息中间件的定义与作用 消息中间件在分布式系统中的重要性 对比分析的四种主流消息中间件概述 消息中间件核心特性对比 消息传递模型 Kafka:专注于发布-订阅模型 ActiveMQ:支持点对点和发布-订阅两种模型 RabbitMQ:支持点…...
实战打靶集锦-38-inclusiveness
文章目录 1. 主机发现2. 端口扫描&服务枚举3. 服务探查4.系统提权 靶机地址:https://download.vulnhub.com/inclusiveness/Inclusiveness.ova 1. 主机发现 目前只知道目标靶机在192.168.56.xx网段,通过如下的命令,看看这个网段上在线的主…...
JVM 学习计划表(2025 版)
JVM 学习计划表(2025 版) 📚 基础阶段(2 周) 1. JVM 核心概念 JVM 作用与体系结构 理解 JVM 在 Java 跨平台运行中的核心作用,掌握类加载子系统、运行时数据区、执行引擎的交互流程内存结构与数据存…...
Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException
代码在main方法里面没有报错,在Controller里面就报错了。 原来Controller类里面少了行代码 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 加上去就解决了。...
Java的Selenium元素定位-xpath
xpath其实就是一个path(路径),一个描述页面元素位置信息的路径,相当于元素的坐标xpath基于XML文档树状结构,是XML路径语言,用来查询xml文档中的节点。 绝对定位 从根开始找--/(根目录)/html/body/div[2]/div/form/div[5]/button缺…...
【QT】Qt5 QtWebEngine使用教程
目录 1、QtWebEngine相比于QtWebKit的优势2、项目配置2.1 确认 Qt 版本2.2 在.pro 文件中添加依赖3、显示网页4、实现Qt和网页JavaScript之间的交互4.1 Qt执行网页的JavaScript代码4.2 JavaScript调用Qt对象的函数QtWebEngine 是 Qt 框架中用于在应用程序中嵌入 Web 内容的模块…...
python基础-13-处理excel电子表格
文章目录 【README】【13】处理Excel电子表格【13.1】Excel文档【13.2】安装openpyxl模块【13.3】读取Excel文档【13.3.1】使用openpyxl模块打开excel文档【13.3.2】从工作簿取得工作表【13.3.3】从工作表sheet获取单元格cell【13.3.5】从表中获取行和列【13.3.6】工作簿、工作…...
03.unity开发资源 获取
03.unity开发资源 获取 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有:学习and理解的关联性,希望对您有用~ unity简介-unity基础 第三节 …...
设计模式简述(四)模板方法模式
模板方法模式 描述基本定义使用 描述 当一系列业务的基本流程是相同的,对于不同的业务可以在各自子类实现 所谓模板方法指的就是父类中固定的那部分代码 其实这里的思想和前面设计原则中开闭原则的描述是一致的,父类中的模板代码就是稳定的部分&#x…...
OpenCV界面编程
《OpenCV计算机视觉开发实践:基于Python(人工智能技术丛书)》(朱文伟,李建英)【摘要 书评 试读】- 京东图书 OpenCV的Python开发环境搭建(Windows)-CSDN博客 OpenCV也支持有限的界面编程,主要是针对窗口、控件和鼠标…...
【leetcode】记录与查找:哈希表的题型分析
前言 🌟🌟本期讲解关于力扣的几篇题解的详细介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废话不…...
AntDesign下,Select内嵌Menu标签,做一个多选下拉框,既可以搜索,还可以选择下拉项
话不多说,直接上效果和代码 效果图一: 效果图二: renderAddStyleOption (item: any) > {const { value } this.props;const { currentSelectedOptionIds, currentStyleId } this.state;const styleSettings value?.styleSettings;c…...
css炫酷的3D水波纹文字效果实现详解
炫酷的3D水波纹文字效果实现详解 这里写目录标题 炫酷的3D水波纹文字效果实现详解项目概述技术栈核心实现1. 基础布局2. 渐变背景3. 文字效果实现3.1 基础样式3.2 文字漂浮动画 4. 水波纹效果4.1 模糊效果4.2 水波动画 5. 交互效果 技术要点项目难点与解决方案总结 项目概述 在…...
P1036 [NOIP 2002 普及组] 选数(DFS)
题目描述 已知 n 个整数 x1,x2,⋯,xn,以及 1 个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n4,k3,4 个整数分别为 3,7,12,19 时,可得全部的组合与它…...
PyTorch中.pth文件的解析及应用
文章目录 一、.pth文件简介二、如何保存.pth文件三、如何加载.pth文件跨硬件加载加载后操作 四、.pth文件的结构与内容解析.pth文件示例 五、.pth文件的优缺点优点缺点 六、常见应用场景七、模型文件体积优化技巧问题背景解决方案效果对比 八、总结九、参考 一、.pth文件简介 …...
【doris】在线事务处理
目录 1. 说明2. 特点3. 应用场景4. 技术实现5. OLTP 与 OLAP 的对比6. 挑战7. 发展趋势 1. 说明 1.OLTP(Online Transaction Processing,在线事务处理) 是一种用于处理大量日常事务操作的数据库系统类型。2.它主要面向实时性要求高、数据操作…...
后端思维之高并发处理方案
前言 在互联网时代,高并发已经成为后端开发者绕不开的话题。无论是电商平台的秒杀活动、抢购系统,还是社交应用的高频互动,高并发场景的出现往往伴随着巨大的技术挑战。 如何在流量激增的同时,确保系统稳定运行、快速响应…...
OpenCV 图形API(10)用于执行标量除以矩阵的逐元素操作函数divRC()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 描述 标量除以矩阵。 函数 divRC 将给定的标量除以矩阵 src 的每个元素,并将结果保存在与 src 具有相同大小和类型的新的矩阵中: …...
14.2linux中platform无设备树情况下驱动LED灯(详细编写程序)_csdn
我尽量讲的更详细,为了关注我的粉丝!!! 因为这跟之前的不一样,提出来驱动的分离和分层。 提到驱动分离和分层,必然可以联系上一章咱们知道的驱动-总线-设备。 在无设备树的状态下,必然要写寄存…...
K8s的BackUP备份
文章目录 1、kubeadm 安装的单 master 节点数据备份和恢复方式2、Velero 工具3、Velero 服务部署4、备份还原数据 ETCD备份/还原有多种类型,取决于你 k8s 集群的搭建方式 1、kubeadm 安装的单 master 节点数据备份和恢复方式 拷贝 etcdctl 至 master 节点…...
Ruoyi-vue plus 5.2.2 flowble设计流程点击开始流程图错误
网关设置条件或者是事件删除后出现,点击网关节点无法找到下面的事件节点。 配置页面事件错误,点背景配置进去了事件,发现再次加载,或者删除的时候VUE页面无法加载。 解决方式:查看XML文件,这个节点是否存在…...
如何快速入门物联网单片机开发?
背景 物联网单片机硬件开发涉及多个阶段,元器件是否“自己设计”取决于具体需求。以下是详细解答和学习方案: 一、元器件是否自己设计? 通用元器件: 大多数情况下,开发者直接使用现成的标准化元器件(如电阻…...
在 .NET 8 中使用自定义令牌身份验证掌握 SignalR Hub 安全性
最近在练习做一个 Web 开发项目,需要使用 WebSockets 传输数据,实现实时通信。这是一个 React.js 项目,后端是 .NET。 虽然 MSDN 提供了出色的顶级文档,但它通常缺少高级用例所需的低级细节。 一种这样的场景是使用自定义令牌对…...
《SQL赋能人工智能:解锁特征工程的隐秘力量》
在当今的科技发展进程中,人工智能(AI)已经成为推动各领域变革的核心驱动力。而在人工智能的庞大体系里,特征工程占据着举足轻重的地位,它是将原始数据转化为能够让模型有效学习的特征的关键环节。鲜有人深入探讨的是&a…...
基于springboot+vue的二手车交易系统
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
React安装使用教程
ReactAnt Designrouteraxios安装完整教程 官网:React Native 中文网 使用React来编写原生应用的框架 一,安装 npx create-react-app my-app npm start npm eject 暴露项目优先提交代码 git add . git commit -m “搭建项目“ 4.yarn add node-sass …...
Day20 -自动化信息收集工具--ARL灯塔的部署
准备: 纯净的Docker环境 ARL的包 一、Docker的部署 00x1 更新系统包 sudo apt update 00x2 安装必要的依赖包 sudo apt install -y apt-transport-https ca-certificates curl software-properties-common 00x3 下载docker和docker-compose apt-get install do…...
