目前unity中有两种动画,一种是legacy动画,用Animation播放, 另一种是Mecanim,用Anamator播放。
本文只讨论legacy动画的播放,不涉及其它动画,也不涉及legacy动画的制作。
二、动画的预备确保物体上已经挂了动画,一般只有一个动画片段。检查是否能播放:勾选自动播放,点击运行进行测试。
Animation动画片段主要属性:
- time 相当于播放进度,正向播放的时候,记得设置成0【start位置】,反向播放的时候设置成clip.length【end位置】
- speed 当为正的时候是正向播放,为负的时候是倒播
- ***play(“动画片段名字”)***播放动画
注意:动画片段记得设置成legacy,不然不能播放
【1】选中片段
【2】出现Inspector面板
【3】Inspector处鼠标右键,选择【Debug】
【4】勾选legacy
播放 = 从头播放【time设置成0】
倒播 = 从尾倒播【time设置成length】
播放的时候,记得设置time= 0
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; ////// 动画播放、暂停、倒放 /// public class PlayAnimation:MonoBehaviour { [Header("正播速度值(+)")] public float speed; [Header("倒播速度值(-)")] public float speedBack; ////// 挂载动画的物体 /// [Header("动画物体")] public GameObject animGo; ////// 正播按钮 /// [Header("正播按钮")] public Button BtnPlay; ////// 倒播按钮 /// [Header("倒播按钮")] public Button BtnPlayBack; //////播放动画的组件,该组件在动画物体上 /// private Animation myAnim; private void Awake() { //事件侦听 BtnPlay.onClick.AddListener(()=> Play(ref myAnim, speed)); BtnPlayBack.onClick.AddListener(()=>PlayBack(ref myAnim, speedBack)); } // Use this for initialization void Start() { myAnim = animGo.GetComponent(); } /// /// 动画正播 /// /// Animation组件 /// 播放的速度【为正】 public static void Play(ref Animation myAnim, float speed) { if (speed < 0) { Debug.LogError($"速度值设置为正数。Play()"); return; } myAnim[myAnim.clip.name].time = 0; myAnim[myAnim.clip.name].speed = speed; myAnim.Play(myAnim.clip.name); } ////// 动画倒播 /// /// Animation组件 /// 播放的速度【为负】 public static void PlayBack(ref Animation myAnim, float speed) { if(speed > 0f) { Debug.LogError($"速度值必须设置为负数。PlayBack()"); return; } myAnim[myAnim.clip.name].time = myAnim[myAnim.clip.name].length;//从最后倒播 myAnim[myAnim.clip.name].speed = speed; myAnim.Play(myAnim.clip.name); } }



