unity3d - UnityWebRequest 未完成
问题描述
我正在学习如何从在线资源流式传输音频。我的项目使用 UnityWebRequest 和 UnityWebRequestMultimedia 来获取音频流。我的 Unity 版本是 2020.2.5f1。
我遇到的问题是 Web 请求永远不会完成。它达到了大约 98% 的进度,然后重新启动,我不知道为什么。奇怪的是,这些 URL 可以在我的浏览器中使用,但不能在 Unity 编辑器中使用。这是我的代码:
using System.Collections;
using UnityEngine;
using UnityEngine.Networking;
using TMPro;
public class RadioManager : MonoBehaviour
{
public RadioStation[] radioStations = new RadioStation[0];
public AudioSource source;
public TextMeshProUGUI connectionStatus;
public TextMeshProUGUI radioName;
[System.Serializable]
public class RadioStation
{
public string name;
public string url;
}
private void Start()
{
StartCoroutine(DownloadAndPlay(radioStations[1]));
}
IEnumerator DownloadAndPlay(RadioStation radioStation)
{
radioName.text = radioStation.name;
using (UnityWebRequest radioRequest = UnityWebRequestMultimedia.GetAudioClip(radioStation.url, AudioType.MPEG))
{
UnityWebRequestAsyncOperation _op = radioRequest.SendWebRequest();
while(_op.progress < 1F)
{
Debug.Log($"Pending Request... {_op.progress}%");
yield return new WaitForSeconds(0.25F);
}
if (radioRequest.result == UnityWebRequest.Result.ConnectionError)
{
connectionStatus.text = "Error Connecting!";
}
else if (radioRequest.result == UnityWebRequest.Result.InProgress)
{
connectionStatus.text = "Connecting...";
}
else
{
source.clip = DownloadHandlerAudioClip.GetContent(radioRequest);
connectionStatus.text = "Connected!";
}
}
}
}
还有我的场景的图像。你可以看到它是如何设置的: 图片
解决方案
推荐阅读
- bootstrap-4 - 设置所有等高的卡片 (mdbootstrap)
- c# - 在字典中存储多个逆变委托
- java - 解析 Rest API 响应
- android - 获取 DeviceId 弃用 Android
- authentication - .NET Core 2.x Web API 中的身份验证过滤器?改用什么
- python - 根据其他列值创建 Pandas Dataframe 行
- azure-cosmosdb - 每个数据库的 Azure Cosmos DB 秘密连接字符串
- python - 如何将图像对象保存在数据库中?
- qt - TableView在按钮上滚动单击Qml
- android - 我的应用程序 js 在本机反应中不起作用。我的错误是什么?