【Unity3D日常开发】Unity3D中Animation和Animator动画的播放、暂停、倒放控制
创始人
2024-06-03 16:41:30
0

推荐阅读

  • CSDN主页
  • GitHub开源地址
  • Unity3D插件分享
  • 简书地址
  • 我的个人博客

大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

一、前言

在日常开发中,常常会遇到要控制动画的播放、暂停和倒放的情况。

这篇文章就总结一下,AnimationAnimator动画播放系统的控制播放、暂停、倒放的代码。

首先,来了解一下AnimationAnimator的区别和联系。

二、Animation和Animator的区别和联系

2-1、Animation动画播放器

在这里插入图片描述
Animation动画播放器,用来控制单一动画的播放和停止,占用资源小。

属性简介
Animation当前播放的动画
Animations所有可以播放的动画片段,可以通过切换动画片段来切换动画
Play Automatically自动播放
Animate Physics动画是否和物理世界进行交互(可以研究一下)
Culling Type动画在不可见时是否继续播放,默认总是播放

2-2、Animator动画状态机

在这里插入图片描述
Animator动画控制器,用来控制多个动画的播放、切换及叠加系列复杂的效果,动画状态机,占用资源大。

属性简介
Controller动画控制器
Avatar物体的骨骼Avatar
Apply Root Motion是否使用动画本身来控制角色的位置(不然就是使用脚本来控制角色的位置)
Update Mode动画的更新模式,默认是同步更新,动画速度与运行速度相匹配,运行速度慢,动画慢
Culling Mode动画在不可见时是否继续播放,默认总是播放

2-3、区别与联系

Animation组件和Animator组件的使用是非常相似的。

Animation组件用来控制单一动画的播放控制,Animator控制多个动画之间的切换,用了状态机机制。

Animation占用资源少,Animator占用资源多。

Animator增加了骨骼Avatar,可以控制骨骼动画:
在这里插入图片描述

三、Animation中控制动画播放、暂停、倒放

3-1、播放动画

根据动画片段的名字播放动画:

using UnityEngine;public class AnimationPlayControl : MonoBehaviour
{Animation ani;void Start(){//播放动画ani.Play("Open");}
}

设置动画片段来播放动画:

using UnityEngine;public class AnimationPlayControl : MonoBehaviour
{Animation ani;public AnimationClip[] clips;void Start(){//使用动画片段来播放动画ani.clip = clips[0];ani.Play();}
}

将动画片段拖进去:
在这里插入图片描述

AnimationClip:动画剪辑片段,储存基于关键帧的动画,是用于Animation来播放动画

3-2、暂停动画

使用了三种方法

using UnityEngine;public class AnimationPlayControl : MonoBehaviour
{Animation ani;Animator anir;void Start(){// 播放动画ani.Play("Open");// 暂停动画// 第一种方法:ani.Stop();// 第二种方法:AnimationState animationState = ani["Open"];animationState.speed = 0;//第三种方法Time.timeScale = 0;}
}

3-3、倒放动画

关键点在于设置AnimationState动画状态播放速度为负值即可倒放,负多少无所谓:

using UnityEngine;public class AnimationPlayControl : MonoBehaviour
{Animation ani;void Start(){// 倒放动画AnimationState animationState = ani["Open"];animationState.speed = -1;//设置速度为负值即可animationState.normalizedTime = 1;ani.Play("Open");}
}

AnimationState:动画状态,用来改变单一动画的播放速度、权重、时间、层级、播放Mode,以及混合模式

四、Animator中控制动画播放、暂停、倒放

4-1、旧版Unity的API实现播放、暂停、倒放

using UnityEngine;public class AnimationPlayControl : MonoBehaviour
{public Animator ani;void Start(){}void Update(){if (Input.GetKeyDown(KeyCode.W)){// 暂停动画ani.speed = 0;}if (Input.GetKeyDown(KeyCode.S)){// 倒播// 现在speed设置为负数无效ani.speed = -1;}if (Input.GetKeyDown(KeyCode.D)){// 播放动画ani.speed = 1;}}
}

目前,播放和暂停是有用的,但是倒放不管用。
接下来,看一下新版Unity如何实现Animator动画的倒放吧。

4-2、新版Unity的API实现播放、暂停、倒放

第一种方法,复制一份动画片段
在这里插入图片描述
代码控制:

using UnityEngine;public class AnimationPlayControl : MonoBehaviour
{public Animator ani;void Start(){// 正常播放ani.Play("textAni");// 倒放ani.Play("textAni-1");}
}

第二种方法,用状态机控制

(1)新建变量float类型:
在这里插入图片描述
(2)命名为speed:
在这里插入图片描述
(3)勾选Parameter参数
在这里插入图片描述
(4)代码控制

using UnityEngine;public class AnimationPlayControl : MonoBehaviour
{public Animator ani;void Start(){}void Update(){if (Input.GetKeyDown(KeyCode.W)){// 暂停动画ani.SetFloat("speed",0);}if (Input.GetKeyDown(KeyCode.S)){// 倒播ani.SetFloat("speed", -1);}if (Input.GetKeyDown(KeyCode.D)){// 播放动画ani.SetFloat("speed", 1);}}
}

五、后记

本篇文章详细讲解了AnimationAnimator组件的介绍和不同点。

已经使用的方法。

然后介绍了AnimationAnimator组件播放动画的过程中的播放、倒播、暂停动画的代码分享。

当然,AnimationAnimator组件的使用不仅仅就这些,更多的高端的使用方法,可以关注其他文章。

如果觉得本篇文章有用别忘了点个关注,关注不迷路,持续分享更多Unity干货文章。


你的点赞就是对博主的支持,有问题记得留言:

博主主页有联系方式。

博主还有跟多宝藏文章等待你的发掘哦:

专栏方向简介
Unity3D开发小游戏小游戏开发教程分享一些使用Unity3D引擎开发的小游戏,分享一些制作小游戏的教程。
Unity3D从入门到进阶入门从自学Unity中获取灵感,总结从零开始学习Unity的路线,有C#和Unity的知识。
Unity3D之UGUIUGUIUnity的UI系统UGUI全解析,从UGUI的基础控件开始讲起,然后将UGUI的原理,UGUI的使用全面教学。
Unity3D之读取数据文件读取使用Unity3D读取txt文档、json文档、xml文档、csv文档、Excel文档。
Unity3D之数据集合数据集合数组集合:数组、List、字典、堆栈、链表等数据集合知识分享。
Unity3D之VR/AR(虚拟仿真)开发虚拟仿真总结博主工作常见的虚拟仿真需求进行案例讲解。
Unity3D之插件插件主要分享在Unity开发中用到的一些插件使用方法,插件介绍等
Unity3D之日常开发日常记录主要是博主日常开发中用到的,用到的方法技巧,开发思路,代码分享等
Unity3D之日常BUG日常记录记录在使用Unity3D编辑器开发项目过程中,遇到的BUG和坑,让后来人可以有些参考。

相关内容

热门资讯

"导师制+团团联盟&... 中国青年报客户端讯(中青报·中青网记者 田宏炜)5月17日,共青团福州市委联合福州市政协社法委、福州...
广东·黑龙江经贸合作对接交流活... 中新网哈尔滨5月18日电(记者 王妮娜)“粤贸全国”—广东·黑龙江经贸合作对接交流活动18日在哈尔滨...
贵州茅台年度股东大会5月19日... 人民财讯5月18日电,5月19日,贵州茅台(600519)将召开2024年度股东大会,大会开幕前夕(...
北京:当运动会“撞上”民族风,... 中国青年报客户端讯(实习生 杨丽 中青报·中青网记者 张敏)“有一种重返校园的青春感,希望能常有这样...
宠物友好出行如何可持续发展?网... 中国青年报客户端讯(中青报·中青网见习记者 刘佳佳 记者 宁迪)随着养宠群体的增加,携宠出行的需求不...
哈洽IN现场|智能农机设备“亮... “你这个收割机,最大可以收割多少行呢?”“这个喷药机喷药的准确性咋样,浪费农药不?”“施肥器安装了G...
“银发列车”有啥服务?能去哪儿... 转自:中国妇女网2025年春季以来,中国多地铁路部门都纷纷推出了银发旅游专列,不仅改善了老年群体的出...
两岸音乐人福建福鼎共话少数民族... 中新社宁德5月18日电 (林榕生 叶菲菲)作为海峡两岸艺术交流汇——2025第二届海峡两岸各民族歌会...
山西发布高温橙色预警:“热浪”... 中新网太原5月18日电 (刘小红)18日,山西省气象台发布高温橙色预警和大风蓝色预警,该省多地即将进...
武契奇:我已经“受够了”! 据法新社5月17日报道,塞尔维亚总统武契奇在17日的一次集会上对支持者们说,他已经“受够了”要求提前...
“全要素”服务 “创业青年”的... 转自:天津广播电视台天津北方网讯:让更多科研成果从“实验室”走向“生产线”,天开园围绕概念验证、金融...
辉煌70年 奋进新征程丨智慧农... 转自:千龙网4月27日,新疆宏基智能农机装备制造有限公司生产车间内,10名工人正忙着改装4台采棉机。...
银企对接会服务企业“出海” 转自:天津广播电视台天津北方网讯:助力企业“出海”,市委金融办、市商务局联合中国人民银行天津市分行等...
疑似 IOSG 地址提取 94... 吴说获悉,据 Arkham 监测,地址: 0xd4…17e9 于本日 20:25 UTC+8 从 B...
男子懒得下楼从30多楼扔酒瓶被... 转自:荔枝新闻 #男子喝酒怕家人发现多次30楼扔酒瓶#【...
中国旅马大熊猫“福娃”“凤仪”... 中新社吉隆坡5月18日电 (记者 陈悦)中国旅马大熊猫“福娃”(在马名字为“兴兴”)和“凤仪”(在马...
在德清,看见县域经济新势能 竹林如海,溪水潺潺。作为天目山的余脉、“全球最值得一去的45个地方之一”,浙江德清县境内的莫干山不仅...
学习时节|如何加强作风建设,总...   5月16日出版的第10期《求是》杂志发表中共中央总书记、国家主席、中央军委主席习近平的重要文章《...
成都警方披露千万诈骗案细节:平... 【#成都警方披露千万诈骗案细节#:平时营造节俭人设】日前,四川成都公安经侦部门公布了一起系列合同诈骗...
中共中央、国务院:公务用车集中... (转自:观点网)观点网讯:5月18日,中共中央、国务院印发修订后的《党政机关厉行节约反对浪费条例》,...