loadRemote 同一 url 未刷新

我先使用 loadRemote 加载了一个音档

cc.assetManager.loadRemote(path, (err: Error, clip: cc.AudioClip) => {
    this.TestAS.clip = clip;
    this.TestAS.play();
});

随后我不用了释放掉它

this.TestAS.clip = null;
let asset: cc.Asset = cc.assetManager.assets.get(path);
cc.assetManager.releaseAsset(asset); // 释放引用

并透过后端更新该音档档案,并重新 loadRemote 它
发现播放出来的声音并没有被改变,还是一开始第一次读取的旧音档

请问我该如何正确的读取到新的音档?

  • Creator 版本: 3.5.2

  • 目标平台: 网页 web (于预览阶段就会发生)

第二次load前先用asset manager.cacheManager.removeCache

assetManager.cacheManager 于 web 平台上似乎不存在,无法使用

还是我在 Editor 预览下无法使用?

那就试试设定第二参数,reloadAsset,cacheAsset,cacheEnable啥的呗。

cc.assetManager.loadRemote(path, { reload: false, cacheAsset: false, cacheEnabled: false }, (err: Error, clip: cc.AudioClip) => {
            this.TestAS.clip = clip;
            this.TestAS.play();
});

我尝试过全开 false 也没用,后面都会读到一样的资源

会不会服务器有缓存,其实加载的就是同一个文件,试试后面加?v=1

应该是浏览器缓存吧,你看一下那个url有没有重新发起请求,如果发起请求的话,响应是后端相应的还是直接从缓存中取的


比如说我这个就是从缓存中取的,另外最好勾选那个md5用于版本控制,防止加载不到最新的资源

有可能 run time 時手动清除掉这个缓存吗?
因为这是额外的资源,不会包含在打包档案,也不會有 md5

reloadAsset要是true才会重新下载,false会先找本地

reloadAsset 改成 true 后
我确定了这边的内容有被更动 (我有点开来试听)

不过后续 loadRemote 还是会拿到旧的资源
不晓得它到底是从哪里拿取资源…

+10086,reloadAsset没用啊

你的url后面添加一个?timestamp=${Date.now()}这样可以保证每一次都会拉最新的了

1赞

这就是每次都请求最新的了。

看下是不是设置了浏览器缓存, 如果你这个是CDN资源的话 肯定是有缓存时间的