使用unity2020.3.0進行網絡圖片、音頻和視頻資源的加載和交互,通過網上搜索資源并結合工程實踐嘗試了一些操作,實現了相似的功能,在此分享給大家。
一、下載圖片
曾經使用的www方式進行下載,這里使用UnityWebRequest在攜程中進行下載,具體實現方式如下:
IEnumerator getImage(string url)
{
UnityWebRequest unityWebRequest = UnityWebRequest.Get(url);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.isNetworkError || unityWebRequest.isHttpError)
{
Debug.Log("網絡錯誤");
}
else
{
// 網絡正常情況先獲取到圖片的數據
byte[] results = unityWebRequest.downloadHandler.data;
// 創建一個 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();
}
}
二、加載網絡音頻
思路:可以直接加載播放;也可以下載到本地,然后進行播放。
(一)直接可以加載播放
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)
{
// 網絡錯誤
Debug.Log("網絡錯誤");
}
else
{
// 網絡正常情況
// 先獲取到圖片的數據
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");
//判斷是否已經轉換過
if (!File.Exists(@cacheUrl))
{
//將MP3轉換成WAV
using (var audioStrem = new Mp3FileReader(urlOld))
{
WaveFileWriter.CreateWaveFile(@cacheUrl, audioStrem);
}
}
//使用Unity加載wav音頻并播放
StartCoroutine(LoadAndPlay(@cacheUrl));
}
更多關于unity游戲培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。