请大佬仔细看下,上面关于远程资源的加载和释放代码,引擎文档说的是要自己管理,但具体的资源加载进来后,对象的引用计数要不要+1?多次加载相同资源怎么复用?对象的释放应该把计数-1还是destroy?释放哪种对象才能回收内存?
这些问题如果你在文档上能找到答案,或者从来没觉得远程资源需要释放,那这篇文章确实是多余的。
请大佬仔细看下,上面关于远程资源的加载和释放代码,引擎文档说的是要自己管理,但具体的资源加载进来后,对象的引用计数要不要+1?多次加载相同资源怎么复用?对象的释放应该把计数-1还是destroy?释放哪种对象才能回收内存?
这些问题如果你在文档上能找到答案,或者从来没觉得远程资源需要释放,那这篇文章确实是多余的。
直接按照 * assetManager.dependUtil._depends 用uuid做key,存放该资源的所有依赖资源。这个规则把动态的依赖关系建立起来就可以正常处理了
如果你用了 loadRemote 并做过释放,可能会有不同想法。
const imgAsset = new ImageAsset(img);
imgAsset._uuid = this.getImageAssetUUID(url);
assetManager.assets.add(imgAsset._uuid, imgAsset);
imgAsset._nativeUrl = imgAsset._uuid;
assetManager.dependUtil._depends.add(imgAsset._uuid, { deps: [], nativeDep: [] });
远程我是这样建的
这个只是 ImageAsset 吧,Texture2D 和 SpriteFrame 呢?会做释放吗?
大佬,demo在这个帖子里
可以都建立依赖关系
mark…
本地静态资源,引擎是怎么加载释放的呢?
你说的是本地缓存么
不是,说的就是包里的资源。
顶个,3.8.2也还是一样
想说 loadRemote 的 imageasset都释放了,怎么gfx内存还是下不去,弄了一上午才发现 gfx 降不下来的内存要是手动释放 texture2d 才行……
顶,这是社区把资源管理讲的最详细的帖子
需要
你用了动态资源的地方就是使用了动态资源
那是不是在预制体销毁的时候,把当前预制体用到的动态资源计数都减1;
被更换图片显示(替换的动态资源) 被替换下的资源也要 减1 。 是这么操作吗?
好的,谢谢答疑。
顺便问句,请问下你认为什么样的资源是"动态资源"?