使用unity2020.3.0進行網(wǎng)絡圖片、音頻和視頻資源的加載和交互,通過網(wǎng)上搜索資源并結(jié)合工程實踐嘗試了一些操作,實現(xiàn)了相似的功能,在此分享給大家。
一、下載圖片
曾經(jīng)使用的www方式進行下載,這里使用UnityWebRequest在攜程中進行下載,具體實現(xiàn)方式如下:
IEnumerator getImage(string url)
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
{
Debug.Log("網(wǎng)絡錯誤");
}
else
{
// 網(wǎng)絡正常情況先獲取到圖片的數(shù)據(jù)
byte[] results = unityWebRequest.downloadHandler.data;
// 創(chuàng)建一個 Texture,這個尺寸要自己定
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)絡音頻
思路:可以直接加載播放;也可以下載到本地,然后進行播放。
(一)直接可以加載播放
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)絡錯誤
Debug.Log("網(wǎng)絡錯誤");
}
else
{
// 網(wǎng)絡正常情況
// 先獲取到圖片的數(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);
}
然后進行播放,具體如下:
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));
}
更多關于unity游戲培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經(jīng)驗,采用全程面授高品質(zhì)、高體驗培養(yǎng)模式,擁有國內(nèi)一體化教學管理及學員服務,助力更多學員實現(xiàn)高薪夢想。