分关卡的,分包有没有办法做到删除已经玩过的关卡的资源,只加载当前关卡的资源?求大神指导
目前有一个解决办法是你可以通过在微信小游戏平台下调用 wx.downloader.cleanAllAssets() 和 wx.downloader.cleanOldAssets() 接口来手动清除资源。前者会清除缓存目录下的所有缓存资源,请慎重使用;而后者会清除缓存目录下目前应用中未使用到的缓存资源。具体内容可以参考文档:微信小游戏环境的资源管理
谢谢!!!
你的需求是想删除分包里的资源还是想删除分包下载到本地之后的缓存文件?
1.如果是删除分包里的资源的话,这个不太行,就我所知,微信目前没有这类api,而且加载分包都只能整个分包一起加载,没有细到分包里的具体资源。你可以把资源按关卡分包,就没有必要删除分包里的资源了。
2.如果你是想删除分包下载到本地之后的缓存文件,2楼的这两个api都可以用,如果你想颗粒度更细一点的话,可以用微信小游戏提供的api,unlink可以删除某个文件,你可以在关卡不再需要时,去遍历一下关卡用到的资源,用这些资源的url去调用unlink,全部删除
感谢大佬回复!!!拿打飞机来说哈 ,我主包把UI打进去,不同关卡用的场景资源不同,第一关资源做一个分包,想着如果玩家到第二关就把第一关的分包删了,这样就不会超过微信给的限制了
分包在微信小游戏上,不需要删除的,不占用缓存空间,随你怎么加载都行。不过总共只有 8M 的限制。
游戏资源已经超过了20M了,就想着玩家玩哪一关就加载哪一关的分包,可以做到总体不超过8M
分包的包体是静态计算的。不可能动态给你做限制,否则这个 8M 有什么意义??
建议把构建后的 res/raw-assets 目录整个丢到自有的服务器上吧。
当然能删除不用重复加载更好!!
这样恐怕不行,1.微信没有删除分包的api,2.微信做的限制是在上传整个小程序包的时候就检测了的,而不是说按当前运行的内容的多少来检测。
你的这个需求要通过cdn来解决了
谢大神,我做个例子尝试下