【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制
推薦閱讀
- CSDN主頁
- GitHub開源地址
- Unity3D插件分享
- 簡書地址
- 我的個人博客
大家好,我是佛系工程師☆恬靜的小魔龍☆,不定時更新Unity開發(fā)技巧,覺得有用記得一鍵三連哦。
一、前言
在日常開發(fā)中,常常會遇到要控制動畫的播放、暫停和倒放的情況。
這篇文章就總結一下,Animation和Animator動畫播放系統(tǒng)的控制播放、暫停、倒放的代碼。
首先,來了解一下Animation和Animator的區(qū)別和聯(lián)系。
二、Animation和Animator的區(qū)別和聯(lián)系
2-1、Animation動畫播放器
Animation動畫播放器,用來控制單一動畫的播放和停止,占用資源小。
| Animation | 當前播放的動畫 |
| Animations | 所有可以播放的動畫片段,可以通過切換動畫片段來切換動畫 |
| Play Automatically | 自動播放 |
| Animate Physics | 動畫是否和物理世界進行交互(可以研究一下) |
| Culling Type | 動畫在不可見時是否繼續(xù)播放,默認總是播放 |
2-2、Animator動畫狀態(tài)機
Animator動畫控制器,用來控制多個動畫的播放、切換及疊加系列復雜的效果,動畫狀態(tài)機,占用資源大。
| Controller | 動畫控制器 |
| Avatar | 物體的骨骼Avatar |
| Apply Root Motion | 是否使用動畫本身來控制角色的位置(不然就是使用腳本來控制角色的位置) |
| Update Mode | 動畫的更新模式,默認是同步更新,動畫速度與運行速度相匹配,運行速度慢,動畫慢 |
| Culling Mode | 動畫在不可見時是否繼續(xù)播放,默認總是播放 |
2-3、區(qū)別與聯(lián)系
Animation組件和Animator組件的使用是非常相似的。
Animation組件用來控制單一動畫的播放控制,Animator控制多個動畫之間的切換,用了狀態(tài)機機制。
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動畫狀態(tài)播放速度為負值即可倒放,負多少無所謂:
using UnityEngine;public class AnimationPlayControl : MonoBehaviour {Animation ani;void Start(){// 倒放動畫AnimationState animationState = ani["Open"];animationState.speed = -1;//設置速度為負值即可animationState.normalizedTime = 1;ani.Play("Open");} }AnimationState:動畫狀態(tài),用來改變單一動畫的播放速度、權重、時間、層級、播放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實現播放、暫停、倒放
第一種方法,復制一份動畫片段
代碼控制:
第二種方法,用狀態(tài)機控制
(1)新建變量float類型:
(2)命名為speed:
(3)勾選Parameter參數
(4)代碼控制
五、后記
本篇文章詳細講解了Animation和Animator組件的介紹和不同點。
已經使用的方法。
然后介紹了Animation和Animator組件播放動畫的過程中的播放、倒播、暫停動畫的代碼分享。
當然,Animation和Animator組件的使用不僅僅就這些,更多的高端的使用方法,可以關注其他文章。
如果覺得本篇文章有用別忘了點個關注,關注不迷路,持續(xù)分享更多Unity干貨文章。
你的點贊就是對博主的支持,有問題記得留言:
博主主頁有聯(lián)系方式。
博主還有跟多寶藏文章等待你的發(fā)掘哦:
| Unity3D開發(fā)小游戲 | 小游戲開發(fā)教程 | 分享一些使用Unity3D引擎開發(fā)的小游戲,分享一些制作小游戲的教程。 |
| Unity3D從入門到進階 | 入門 | 從自學Unity中獲取靈感,總結從零開始學習Unity的路線,有C#和Unity的知識。 |
| Unity3D之UGUI | UGUI | Unity的UI系統(tǒng)UGUI全解析,從UGUI的基礎控件開始講起,然后將UGUI的原理,UGUI的使用全面教學。 |
| Unity3D之讀取數據 | 文件讀取 | 使用Unity3D讀取txt文檔、json文檔、xml文檔、csv文檔、Excel文檔。 |
| Unity3D之數據集合 | 數據集合 | 數組集合:數組、List、字典、堆棧、鏈表等數據集合知識分享。 |
| Unity3D之VR/AR(虛擬仿真)開發(fā) | 虛擬仿真 | 總結博主工作常見的虛擬仿真需求進行案例講解。 |
| Unity3D之插件 | 插件 | 主要分享在Unity開發(fā)中用到的一些插件使用方法,插件介紹等 |
| Unity3D之日常開發(fā) | 日常記錄 | 主要是博主日常開發(fā)中用到的,用到的方法技巧,開發(fā)思路,代碼分享等 |
| Unity3D之日常BUG | 日常記錄 | 記錄在使用Unity3D編輯器開發(fā)項目過程中,遇到的BUG和坑,讓后來人可以有些參考。 |
總結
以上是生活随笔為你收集整理的【Unity3D小技巧】Unity3D中Animation和Animator动画的播放、暂停、倒放控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java操作MongoDB数据库(简明版
- 下一篇: IBM Lotus Connection