版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39097425/article/details/109216242
插眼: 2020/10/22 使用UnityWebRequestMultimedia新版Api
有问题请评论区插眼
至于为啥插眼更新,我觉得自己写的每行代码都是过去自己觉得ok的,而随着时间的流逝,在使用的过程中发现某些地方可能这样子会好那么一点点,有时候一点点就够了
第一种 unityWebRequest
形式一:有效
using System.Collections;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;
[RequireComponent(typeof(AudioSource))]
public class AudioPlayFromSSTest : MonoBehaviour
{
private AudioSource audioSource;
/// <summary>
/// 背景音乐路径
/// </summary>
public string sBGMusicPath = Application.streamingAssetsPath + "/Sounds/wBGAudio01.wav";
private void Start()
{
// 获取AudioSource组件
audioSource = GetComponent<AudioSource>();
// 这个考虑到用户不想要背景音乐 删除背景音乐就行,不会报错
// 即是有背景音乐即播放,没有则不播放
if (audioSource && File.Exists(sBGMusicPath))
{
StartCoroutine(IELoadExternalAudioWebRequest(sBGMusicPath, AudioType.WAV));
}
}
/// <summary>
/// 携程加载音频
/// </summary>
/// <param name="_url"></param>
/// <param name="_audioType">AudioType 貌似不支持Mp3 格式,请使用Wav或者是Acc等等格式</param>
/// <returns></returns>
private IEnumerator IELoadExternalAudioWebRequest(string _url, AudioType _audioType)
{
UnityWebRequest _unityWebRequest = UnityWebRequestMultimedia.GetAudioClip(_url, _audioType);
yield return _unityWebRequest.SendWebRequest();
if (_unityWebRequest.isHttpError || _unityWebRequest.isNetworkError)
{
Debug.Log(_unityWebRequest.error.ToString());
}
else
{
AudioClip _audioClip = DownloadHandlerAudioClip.GetContent(_unityWebRequest);
audioSource.clip = _audioClip;
audioSource.Play();
}
}
}
----------------------- OLD -------------------------
形式二:有效
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
public class AudioPlayFromSSTest : MonoBehaviour
{
AudioSource audioSource;
/// <summary>
/// 背景音乐路径
/// </summary>
public string sBGMusicPath = Application.streamingAssetsPath + "/Sounds/wBGAudio01.wav";
void Start()
{
// 获取AudioSource组件
audioSource = GetComponent<AudioSource>();
StartCoroutine(IELoadExternalAudioWebRequest(sBGMusicPath, AudioType.WAV));
}
/// <summary>
/// // 携程
/// </summary>
/// <param name="_url"></param>
/// <param name="_audioType">AudioType 貌似不支持Mp3 格式,请使用Wav或者是Acc等等格式</param>
/// <returns></returns>
private IEnumerator IELoadExternalAudioWebRequest(string _url, AudioType _audioType)
{
UnityWebRequest _unityWebRequest = UnityWebRequestMultimedia.GetAudioClip(_url, _audioType);
yield return _unityWebRequest.SendWebRequest();
if (_unityWebRequest.isHttpError || _unityWebRequest.isNetworkError)
{
Debug.Log(_unityWebRequest.error.ToString());
}
else
{
AudioClip _audioClip = DownloadHandlerAudioClip.GetContent(_unityWebRequest);
audioSource.clip = _audioClip;
audioSource.Play();
}
}
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43249198/article/details/102977122
形式三: 无效
var unityWebRequest = UnityWebRequest.GetAudioClip(s, 0);
yield return unityWebRequest.Send();
if (unityWebRequest.isError)
{
Debug.LogError(unityWebRequest.error);
yield break;
}
AudioClip audioClip = DownloadHandlerAudioClip.GetContent(unityWebRequest);
Debug.Log((int)audioClip.length);
第三种 WWW有效
WWW www = new WWW("file://"+s);
yield return www;
if (www.error != null)
{
Debug.Log(www.error);
}
AudioClip ac = www.GetAudioClip(true, true, 0);
Debug.Log(ac.length);
坑:PC平台下,通过这2种方式获取StreamingAssets下音频时,不支持mp3格式