bundle下的音频文件abcd,仅仅没有文件后缀名,其实还是mp3文件,怎么加载,把它变成可识别的 AudioClip ?
尝试过放远程服务器可以,通过指定 ext, 如下:
assetManager.loadRemote('https://cocos.com/abcd', { ext: ".mp3" }....
但是本地的bundle下的加载,我搞了一天了,找不到好方法。
bundle下的音频文件abcd,仅仅没有文件后缀名,其实还是mp3文件,怎么加载,把它变成可识别的 AudioClip ?
尝试过放远程服务器可以,通过指定 ext, 如下:
assetManager.loadRemote('https://cocos.com/abcd', { ext: ".mp3" }....
但是本地的bundle下的加载,我搞了一天了,找不到好方法。
能不能加载了之后转成arraybuffer的形式去用呢

好奇之下尝试了一下,构建的时候,不带后缀的音频资源没有被识别为AudioClip,直接把类型标记为Asset了。
翻了一下源码,看上去还是通过后缀名区分是否解析为音频的,后缀名是可以通过加载选项的ext字段指定的。不过Bundle.load接口不支持自定义加载选项,但它内部实际上调用的是assetManager.loadAny接口,因此可以直接尝试使用assetManager.loadAny接口来加载不带后缀的音频文件。
assetManager.loadAny('abcd', {
__requestType__: RequestType.PATH,
type: Asset,
ext: '.mp3',
bundle: 'bundleName',
__outputAsArray__: false,
}, onProg, onComp);
PS:纯看源码推导出来的方案,没实际测试过 
好吧,我来说一下我通过曲线救援的方式解决了。
你这个试过了,不行的,上面那个说二进制的方法也是不行的,可以说官方的 bundle 加载方案就不支持无后缀的文件,因为最终还是会走到pipeline的 sync方法中,依然会通过类型来获取资源。
我最终的方式是通过资源的uuid,获取到 raw path,假设为bundle/import/93/936806f6-60ac.json,再拼出http://localhost:7456下的链接 url,而拼出的url依然会默认为 .json 的后缀名,再把这个后缀删掉,最后再通过ssetManager.loadRemote(‘https://localhost:7456/bundle/import/93/936806f6-60ac’, { ext: “.mp3” }) 的方式加载就可以了。
我个人认为官方的 load 还是可以优化的。
那可以尝试个更简单直接的,在构建后,把config.json里面记录的类型 cc.Asset 直接改成 cc.AudioClip,这样应该就不需要改加载了。 
现在的问题就在于构建之后,存在bundle里面的资源信息类型是Asset而不是AudioClip,这个只能看后续官方有没有打算加个处理,不根据后缀名记录这个类型了。
强者 恐怖如斯 