寫了個簡單的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];
}
}
}