簡單的UI序列幀動畫

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章