using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[DisallowMultipleComponent]//只允许添加一次
[RequireComponent(typeof(SpriteRenderer))]//要求有精灵渲染器组件
public class SpriteAnimation : MonoBehaviour
{
private SpriteRenderer mRender; //动画精灵的渲染器
public Sprite[] ActionArray; //动作精灵图组
public int NowFrameIndex = 0; //当前播放帧的序号
private float AnimTimer = 0; //动画的记时器
public float AnimSpeed = 6.0f; //1秒播放几帧图片
private float AnimTimeInterval = 0; //每一帧的间隔
void Awake()
{
mRender = GetComponent<SpriteRenderer>();//获取当前物体精灵渲染器组件
AnimTimeInterval = 1 / AnimSpeed;//每秒时间间隔=1/每秒播放几帧图片
if (ActionArray.Length > 0)//保护:如果精灵图组的长度大于0,即数组中包含个数大于0的元素
{
if (NowFrameIndex < 0)//如果当前播放帧的序号小于0
NowFrameIndex = 0;//设置当前播放帧的序号等于0
if (NowFrameIndex >= ActionArray.Length)//如果当前播放帧的序号大于等于图组长度
NowFrameIndex = ActionArray.Length - 1;//设置当前播放帧的序号等于图组长度-1
mRender.sprite = ActionArray[NowFrameIndex];//设置当前播放到的精灵(默认为0)
}
}
void Update()
{
if (ActionArray.Length <= 0)//当动作精灵图组长度小于等于0,即无精灵元素
return;//返回,无操作
AnimTimer += Time.deltaTime;//开始计时
if (AnimTimer >= AnimTimeInterval)//一个精灵播放的时间已到
{
AnimTimer -= AnimTimeInterval;//恢复
NowFrameIndex++; //播帧
NowFrameIndex %= ActionArray.Length; //播放完一遍动画,返回从第1帧再次播放
//if (NowFrameIndex >= ActionArray.Length)
// NowFrameIndex = 0;
mRender.sprite = ActionArray[NowFrameIndex];//切换精灵
}
}
}