如何解决从 Unity 中的打开文件面板中选择文件后,UnityWebRequest 未完成
string path;
AudioSource audio = GetComponent<AudioSource>();
path = EditorUtility.OpenFilePanel("Audio Files","","wav");
if (path != null)
{
using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("file:///" + path,AudioType.WAV))
if (www.result == UnityWebRequest.Result.ConnectionError)
{
Debug.LogError(www.error);
}
else
{
//Debug.Log(www.url);
audio.clip = DownloadHandlerAudioClip.GetContent(www);
audio.Play();
yield return www.SendWebRequest();
}
}
执行此代码块后,在播放模式下,文件选择器成功运行,但在选择音频文件后,控制台抛出 InvalidOperationException:无法从未完成的 UnityWebRequest 对象获取内容 由这条线引起的
audio.clip = DownloadHandlerAudioClip.GetContent(www);
我的假设是我不知何故错过了从文件选择器获取音频文件路径和使用路径传输实际音频剪辑之间的步骤。
Debug.Log(www.url) 将成功打印文件 URI 方案。
解决方法
通常注意您的 using
.. 您应该将它包装在 { }
中以提高可读性并防止意外行为
然后出于某种原因你这样做了
yield return www.SendWebRequest();
after 尝试访问结果.... 此行应该是 using
行之后的第一行 .. 在尝试检查请求是否正确发送并尝试访问之前下载内容
using (UnityWebRequest www = UnityWebRequestMultimedia.GetAudioClip("file:///" + path,AudioType.WAV))
{
yield return www.SendWebRequest();
if (www.result == UnityWebRequest.Result.ConnectionError)
{
Debug.LogError(www.error);
}
else
{
audio.clip = DownloadHandlerAudioClip.GetContent(www);
audio.Play();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。