我tm也是服了CSDN的人,搞個(gè)gif那么難!?。。。?/h2>
codes
這個(gè)人也是不明白一些新手難以理解這些代碼,Vector3d搞出Vector2d來,真tm奇葩。
還有這個(gè)家伙:
xs,又一個(gè)憨批
哎,這家伙跟這個(gè)差不多.............
看來CSDN是沒有前途了........
不鬧了!進(jìn)入正題!??!
首先,我們可以圖片查看工具工具將它逐幀,沒有這個(gè)功能下載其他的看圖軟件?。?!
作者這里用的是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))
運(yùn)行它就得了!然后把loading21.png給刪掉,最后在Unity引擎里加載一下,讓它生成meta文件。(Assets文件下依次創(chuàng)建Resources/Textures/Loadings/,loading文件夾創(chuàng)建由你,作者這里是搞開發(fā)順便把學(xué)習(xí)經(jīng)驗(yàn)分享至blog)
之后,我們?cè)賱?chuàng)建一個(gè)(UI/Raw Image)
導(dǎo)入loading1.png
我們?cè)侔训谝粠o貼圖到Texture里。
imgs3.png
接下來,上代碼!這里我創(chuàng)建一個(gè)新的腳本——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()函數(shù)查找對(duì)象,為了合理的將圖片每一幀呈現(xiàn)出來,我們得用Time.time(Type = float)將它設(shè)置為開始時(shí)間(變量:stime)我們?cè)谟肨ime.time - stime得出間隔時(shí)間,再將代碼的末尾給它重置變量。之后,我們得判斷它的讀取幀數(shù)是否超過20(if loadranges >= 20),如果不是,逐幀呈現(xiàn)出來(ldimg.GetComponent<RawImage>())來呈現(xiàn)出來,而Resources.Load()時(shí)導(dǎo)入Resources文件夾的內(nèi)容,所以得手動(dòng)創(chuàng)建Resources文件夾,在用Texture關(guān)鍵詞強(qiáng)制轉(zhuǎn)換。最后,我們將loadranges++將每一幀文件名末尾數(shù)字增加。
最后,我們來看一下效果:
呈現(xiàn)效果
怎么樣?是不是比CSDN上的人好多了?
Nice?。?!

codes

xs,又一個(gè)憨批

作者這里用的是WPS
import os
files = os.listdir()
for i in range(1, len(files) + 1):
os.renames(files[i-1], "loading{}.png".format(i))

導(dǎo)入loading1.png

imgs3.png
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;
}
}
}
}

呈現(xiàn)效果

Nice?。?!