一、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】文章来源:https://www.toymoban.com/news/detail-457738.html
播放的时候,记得设置time= 0
文章来源地址https://www.toymoban.com/news/detail-457738.html
五、脚本代码
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播放【播放,正播,倒播,重播】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!