最近时间还算充裕,整理了一些写的小工具。
发现很多小伙伴可能有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());
}