unity中legacy动画用animation播放播放,正播,倒播,重播
Posted dzj2021
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity中legacy动画用animation播放播放,正播,倒播,重播相关的知识,希望对你有一定的参考价值。
一、Unity中的动画种类
目前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;
/// <summary>
/// 动画播放、暂停、倒放
/// </summary>
public class PlayAnimation:MonoBehaviour
[Header("正播速度值(+)")]
public float speed;
[Header("倒播速度值(-)")]
public float speedBack;
/// <summary>
/// 挂载动画的物体
/// </summary>
[Header("动画物体")]
public GameObject animGo;
/// <summary>
/// 正播按钮
/// </summary>
[Header("正播按钮")]
public Button BtnPlay;
/// <summary>
/// 倒播按钮
/// </summary>
[Header("倒播按钮")]
public Button BtnPlayBack;
/// <summary>
///播放动画的组件,该组件在动画物体上
/// </summary>
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>();
/// <summary>
/// 动画正播
/// </summary>
/// <param name="myAnim">Animation组件</param>
/// <param name="speed">播放的速度【为正】</param>
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);
/// <summary>
/// 动画倒播
/// </summary>
/// <param name="myAnim">Animation组件</param>
/// <param name="speed">播放的速度【为负】</param>
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);
以上是关于unity中legacy动画用animation播放播放,正播,倒播,重播的主要内容,如果未能解决你的问题,请参考以下文章
Unity解决动画不可用:The AnimationClip ‘XXX‘ used by the Animation component ‘XXX‘ must be marked as Legacy.
unity animation : AnimationClip must be marked as Legacy The animation state XXX could not