使用unity2020.3.0進(jìn)行網(wǎng)絡(luò)圖片、音頻和視頻資源的加載和交互,通過網(wǎng)上搜索資源并結(jié)合工程實(shí)踐嘗試了一些操作,實(shí)現(xiàn)了相似的功能,在此分享給大家。
一、下載圖片
曾經(jīng)使用的www方式進(jìn)行下載,這里使用UnityWebRequest在攜程中進(jìn)行下載,具體實(shí)現(xiàn)方式如下:
IEnumerator getImage(string url)
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
{
Debug.Log("網(wǎng)絡(luò)錯(cuò)誤");
}
else
{
// 網(wǎng)絡(luò)正常情況先獲取到圖片的數(shù)據(jù)
byte[] results = unityWebRequest.downloadHandler.data;
// 創(chuàng)建一個(gè) Texture,這個(gè)尺寸要自己定
Texture2D myTexture = new Texture2D(1, 1);
myTexture.LoadImage(results);
myTexture.Apply();
yield return new WaitForSeconds(0.01f);
if (m_videoShow != null)
{
m_videoShow.GetComponent().texture = myTexture;
}
yield return new WaitForSeconds(0.01f);
Resources.UnloadUnusedAssets();
}
}
二、加載網(wǎng)絡(luò)音頻
思路:可以直接加載播放;也可以下載到本地,然后進(jìn)行播放。
(一)直接可以加載播放
using (var uwr = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.MPEG))
{
yield return uwr.SendWebRequest();
if (uwr.isNetworkError)
{
Debug.LogError("uwrERROR:" + uwr.error);
m_errList.text = uwr.error;
}
else
{
GetComponent().clip = DownloadHandlerAudioClip.GetContent(uwr);
}
}
GetComponent().Play();
yield return new WaitForSeconds(0.01f);
Resources.UnloadUnusedAssets();
(二)下載然后播放
IEnumerator getMp3Data(string url)
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
{
// 網(wǎng)絡(luò)錯(cuò)誤
Debug.Log("網(wǎng)絡(luò)錯(cuò)誤");
}
else
{
// 網(wǎng)絡(luò)正常情況
// 先獲取到圖片的數(shù)據(jù)
byte[] results = unityWebRequest.downloadHandler.data;
System.IO.File.WriteAllBytes(m_tempFTPFilePath, results);
yield return new WaitForSeconds(0.01f);
Resources.UnloadUnusedAssets();
}
PlayAudio(m_tempFTPFilePath);
}
然后進(jìn)行播放,具體如下:
void PlayAudio(string urlNow)
{
//獲取音頻名稱
string cacheUrl;
string urlOld = urlNow;
int posNow = urlNow.LastIndexOf('/');
//wav保存地址
cacheUrl = urlNow.Insert(posNow, "/Cache").Replace(".mp3", ".wav");
//判斷是否已經(jīng)轉(zhuǎn)換過
if (!File.Exists(@cacheUrl))
{
//將MP3轉(zhuǎn)換成WAV
using (var audioStrem = new Mp3FileReader(urlOld))
{
WaveFileWriter.CreateWaveFile(@cacheUrl, audioStrem);
}
}
//使用Unity加載wav音頻并播放
StartCoroutine(LoadAndPlay(@cacheUrl));
}
更多關(guān)于unity游戲培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢(mèng)想。