在使用序列帧之前需要准备好序列帧的图集,打图集的操作参考
[Unity UGUI图集系统]浅谈UGUI图集使用
准备好序列帧图集,序列帧的播放原理就是获取到图集中的所有图片,然后按照设置的速度按个赋值给Image,其余的都可以按照自己的需求加一些循环,是否设置原图大小等等功能
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class UIImagAnimation : MonoBehaviour
{
public int Framerate = ;
public bool IsLoop = true;
public bool IsSetSnap = false;
public string AtlasName = ""; private Sprite[] sprites;
private int curIndex = ;
private float curRate = ;
private Image mImage;
// Start is called before the first frame update
void Start()
{
if (mImage == null) mImage = GetComponent<Image>();
if (sprites == null) sprites = UIResourceLoadManager.Instance.LoadSprites(AtlasName, sprites);
} // Update is called once per frame
void Update()
{
if (mImage != null && sprites != null && sprites.Length > )
{
if (curIndex < sprites.Length || IsLoop)
{
curIndex %= sprites.Length;
curRate += Time.deltaTime;
if (curRate > ) curRate = ;
float tempRate = 1f / Framerate;
if (tempRate < curRate)
{
curRate = tempRate > ? curRate - tempRate : ;
mImage.sprite = sprites[curIndex];
if (IsSetSnap) mImage.SetNativeSize();
curIndex++;
}
}
}
}
}
根据自己的需求设置好参数,一个简单的UGUI下的序列帧播放功能就实现了