Unity —— 逐帧播放gif图片

tm也是服了CSDN的人,搞个gif那么难!!!!!

codes

这个人也是不明白一些新手难以理解这些代码,Vector3d搞出Vector2d来,真tm奇葩。

还有这个家伙:

xs,又一个憨批

哎,这家伙跟这个差不多.............

看来CSDN是没有前途了........

不闹了!进入正题!!!

首先,我们可以图片查看工具工具将它逐帧,没有这个功能下载其他的看图软件!!!

作者这里用的是WPS

然后重命名,这里我用Python代码来rename的。

import os
files = os.listdir()
for i in range(1, len(files) + 1):
    os.renames(files[i-1], "loading{}.png".format(i))

运行它就得了!然后把loading21.png给删掉,最后在Unity引擎里加载一下,让它生成meta文件。(Assets文件下依次创建Resources/Textures/Loadings/,loading文件夹创建由你,作者这里是搞开发顺便把学习经验分享至blog)

之后,我们再创建一个(UI/Raw Image)

导入loading1.png

我们再把第一帧给贴图到Texture里。

imgs3.png

接下来,上代码!这里我创建一个新的脚本——LoadingImage.cs。(自己看代码!)

using UnityEngine;
using UnityEngine.UI;

public class LoadingImage : MonoBehaviour
{
    int loadranges = 1;
    GameObject ldimg;
    float stime;
    void Start()
    {
        ldimg = GameObject.Find("LoadingImage");
        stime = Time.time;
    }
    void Update()
    {
        if (loadranges >= 20)
        {
            loadranges = 1;
        } else
        {
            if (Time.time - stime >= 0.055)
            {
                ldimg.GetComponent().texture =
                    (Texture)Resources.Load("Textures/Loadings/loading" + loadranges.ToString());
                loadranges++;
                stime = Time.time;
            }
        }
    }
}

解析:

作者的gif图片只有20帧,把它分解后给它重命名(Python代码)。之后,我们用GameObject.Find()函数查找对象,为了合理的将图片每一帧呈现出来,我们得用Time.time(Type = float)将它设置为开始时间(变量:stime)我们在用Time.time - stime得出间隔时间,再将代码的末尾给它重置变量。之后,我们得判断它的读取帧数是否超过20(if loadranges >= 20),如果不是,逐帧呈现出来(ldimg.GetComponent())来呈现出来,而Resources.Load()时导入Resources文件夹的内容,所以得手动创建Resources文件夹,在用Texture关键词强制转换。最后,我们将loadranges++将每一帧文件名末尾数字增加。

最后,我们来看一下效果:

呈现效果

怎么样?是不是比CSDN上的人好多了?

Nice!!!

你可能感兴趣的:(Unity —— 逐帧播放gif图片)