千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Unity中下载图片、音频

Unity中下载图片、音频

来源:千锋教育
发布人:qyf
时间: 2022-08-29 15:26:09 1661757969

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

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT