微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 Unity 中的打开文件面板中选择文件后,UnityWebRequest 未完成

如何解决从 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?