写了个简单的UI图片序列帧动画,虽然Unity动画状态机也可以做图片序列帧动画,但自己写的可控性和扩展性更好点,就一个代码用起来也比较方便。
效果如下:
代码奉上,有需要的直接拿去用吧!
public class FrameAnimation : MonoBehaviour {
[Header("序列帧图片")]
/// <summary>
/// 序列帧图片
/// </summary>
public Sprite[] spriteList;
[Header("显示图片")]
/// <summary>
/// 显示图片
/// </summary>
public Image showImage;
[Header("播放时间间隔")]
/// <summary>
/// 播放时间间隔
/// </summary>
public float rateTime = 0.05f;
[Header("是否循环,小于0为无限循环,大于0为相应循环次数,等于0不播放")]
/// <summary>
/// 是否循环,小于0为无限循环,大于0为相应循环次数,等于0不播放
/// </summary>
public int loop = 0;
private float startTime = 0;
private int spriteCount;
private int index = 0;
private void Start()
{
InitAnimation();
}
public void InitAnimation()
{
spriteCount = spriteList.Length;
index = 0;
if (spriteCount > 0)
{
showImage.sprite = spriteList[index];
}
}
void Update()
{
if (startTime + rateTime < Time.time && loop != 0)
{
startTime = Time.time;
index++;
if (index >= spriteCount)
{
index = 0;
if (loop > 0)
{
loop--;
}
}
showImage.sprite = spriteList[index];
}
}
}