unity 实现UIGIF效果

最近时间还算充裕,整理了一些写的小工具。

发现很多小伙伴可能有GIF图的需求,我原来写的一个基于UGUI使用代码编写的(可以用动画,频率不好控制),可以直接实现,且可控制hz频率。

代码简单,挂在要变为gif的image上,直接将你的gif序列帧挂在spritename上即可.ratetime,你可以吧你自己的计算方法加在上面。

有问题加 QQ群 207019099

/// <summary>
    /// 精灵名字
    /// </summary>
    public Sprite[] spriteName;
    /// <summary>
    /// 序列的长度
    /// </summary>
    public int count;
    /// <summary>
    /// 当前播放标记
    /// </summary>
    private int index;

    public Image sprite;
    /// <summary>
    /// 每张序列播放的间隔
    /// </summary>
    public float interval = 0.04f;
    /// <summary>
    /// 播放一次完整动画的间隔时间
    /// </summary>
    public float rateTime = 0.0f;
    /// <summary>
    /// 是否只播放一次
    /// </summary>
    public bool playOnlyOnce;

    public void Awake()
    {
        sprite = GetComponent<Image>();
    }

    // Use this for initialization
    void Start()
    {
        DontDestroyOnLoad(gameObject);
    }

    public void OnEnable()
    {
        count = spriteName.Length;
        StartCoroutine(ChangeSprite());
    }
    /// <summary>
    /// 循环播放动画
    /// </summary>
    /// <returns></returns>
    public IEnumerator ChangeSprite()
    {
        while (index < count)
        {
            yield return new WaitForSeconds(interval);
            if (count != 0)
            {
                index++;
                if (index < count)
                {
                    sprite.sprite = spriteName[index];
                }
                else if (index >= count &&!playOnlyOnce)
                {
                    yield return new WaitForSeconds(rateTime);
                    index = 0;
                }
            }
        }
    }

    public void OnDisable()
    {
        sprite.sprite = spriteName[0];
        index = 0;
        StopCoroutine(ChangeSprite());
    }

猜你喜欢

转载自blog.csdn.net/gaofei12300/article/details/79786952