全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Unity中下载图片、音频

发布时间:2022-08-29 15:26:09
发布人:qyf

Unity中下载图片、音频

  使用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培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

相关文章

为什么工业控制领域多用PLC?

为什么工业控制领域多用PLC?

2023-10-14
Java为什么不使用多继承??

Java为什么不使用多继承??

2023-10-14
IT驻场与软件外包有什么区别?

IT驻场与软件外包有什么区别?

2023-10-14
ITSS各级别之间有什么联系?

ITSS各级别之间有什么联系?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取