我tm也是服了CSDN的人,搞个gif那么难!!!!!
这个人也是不明白一些新手难以理解这些代码,Vector3d搞出Vector2d来,真tm奇葩。
还有这个家伙:
哎,这家伙跟这个差不多.............
看来CSDN是没有前途了........
不闹了!进入正题!!!
首先,我们可以图片查看工具工具将它逐帧,没有这个功能下载其他的看图软件!!!
然后重命名,这里我用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)
我们再把第一帧给贴图到Texture里。
接下来,上代码!这里我创建一个新的脚本——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<RawImage>().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<RawImage>())来呈现出来,而Resources.Load()时导入Resources文件夹的内容,所以得手动创建Resources文件夹,在用Texture关键词强制转换。最后,我们将loadranges++将每一帧文件名末尾数字增加。
最后,我们来看一下效果:
怎么样?是不是比CSDN上的人好多了?