插眼: 2020/10/22 使用UnityWebRequestMultimedia新版Api
有问题请评论区插眼
至于为啥插眼更新,我觉得自己写的每行代码都是过去自己觉得ok的,而随着时间的流逝,在使用的过程中发现某些地方可能这样子会好那么一点点,有时候一点点就够了
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();
}
}
}