【问题标题】:Load Audio from persistentDataPath in runtime (Unity3d WebGL)在运行时从 persistentDataPath 加载音频(Unity3d WebGL)
【发布时间】:2018-08-03 18:07:24
【问题描述】:

我有在线/离线项目。 我需要从 WebGL 平台上的 Application.persistentDataPath 下载 wav/ogg/mp3 文件。

我试过 www/webrequest。

例如——WWW("file://" + Application.persistentDataPath + filePath);

但总是报错:加载失败:跨域请求仅支持协议方案:http、data、chrome、chrome-extension、https。

你能帮帮我吗?

附:从远程服务器工作正常。

【问题讨论】:

  • 您需要发布filePath 的值并显示您正在使用的代码下载音频文件
  • 文件路径 - "file://idbfs/056f0982a27554e0c5d02b330b2b9993/Assets/WebBundles/Audio/file.mp3" 使用 (WWW www = new WWW("file://" + Application.persistentDataPath + filePath )) { 收益回报 www; AudioClip 剪辑 = www.GetAudioClip(false, false, _type); }

标签: unity3d audio unity-webgl persistent-data


【解决方案1】:

您不能在浏览器中加载本地文件,因为这存在安全风险。如果可以,那么网页可以读取您的硬盘驱动器并窃取您的所有文件。

如果您只是测试,您可以run a local server

如果你想让用户提供一个文件你可以let them choose a file

【讨论】:

  • 但是“AssetBundle.LoadFromFile(_filePath)”或“FileStream.Read” - 正在工作。也许我可以不要求得到?
  • 通过其他 2 个函数加载文件仅适用于 Unity 项目中的文件。另一方面,WWW 用于在 Unity 之外加载内容(不是资产包的一部分)。即使你给它一条通往内部事物的路径,它也不会尝试去做。相反,它将尝试联系不受限制的服务器(或在本例中为本地文件系统)。你为什么要调用 WWW 来加载已经在你的资产中的 mp3?使用其他功能之一。
  • 但是如何从persistentDataPath 获取mp3 文件? AssetBundle.LoadFromFile(_filePath) - 返回 AssetBundle,无法获取 mp3 文件。
猜你喜欢
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 2023-02-10
相关资源
最近更新 更多