creator3.3音频的2次下载

创建了一个空项目,使用了音频,写法是:
let obj: AudioSource = new AudioSource; obj.node = this.node; resources.load("mp3/room_bg", AudioClip, (_err, audio: AudioClip) => { obj.clip = audio; console.log('下载背景音'); obj.play(); // obj.loop = true; // obj.scheduleOnce(() => { // obj.stop(); // }, obj.duration + 10); // obj.scheduleOnce(() => { // obj.play(); // }, obj.duration + 20); });
打web包Run之后,音频可以播放,打开F12看见下载了2次mp3文件,后来逐步注释发现resources.load是一次下载,通过查看底层发现给obj.clip赋值又会启动一次下载;

疑问有:
1,代码创建得话,这样写是否有问题?
2,如果不写resources.load只用obj.clip赋值得话,因为obj.clip需要的是一个AudioClip对象,这个对象该如何获取?

赋值clip的时候好像要是和之前不一样的话 引擎就会下载一个player 还是会二次下载 :sob:

介个对象是代码新创建的,肯定不存在之前的clip诶;

看错题目了 打扰了

1我觉得应该是没问题的 是会有两次下载
2没看懂

resource.load在下载成功后才会返回这个AudioClip类型的对象,不写resource.load只保留给obj.clip赋值的话,赋值的那个AudioClip类型的对象该咋创建嘞?

自己创建audioclip?抱歉,这个我也不晓得 。

但是我感觉不用load创建clip应该不太行吧

https://github.com/cocos-creator/engine/blob/v3.3.0/cocos/audio/audio-source.ts 112行起的回调如果你自己在外部执行一遍估计是能达到效果,不得不说注册的方法写在匿名函数里太 :fearful:,cocos整个音频管理的结构真的糟