Egret社区
1银子
/*
         * 销毁单个资源文件或一组资源的缓存数据,返回是否删除成功。
         * @method RES.destroyRes
         * @param name {string} 配置文件中加载项的name属性或资源组名
         * @param force {boolean} 销毁一个资源组时其他资源组有同样资源情况资源是否会被删除,默认值true
         * @returns {boolean}
         */
Resource.prototype.destroyRes = function (name, force)
以官方这个销毁资源,释放内存的方法来看,我需要告知引擎 销毁资源的名称,或者在 default.res.json 配置的组的“资源组名”
但是我游戏里的 角色资源,怪物资源,等等有很多,他不再使用的时候,并没有记录资源名称。
有没有办法可以获取到游戏内的所有资源,然后检测资源是否在使用,获取到名称,然后执行这个销毁函数?

在官方的缓存资源销毁说明里:
resource在第一次加载资源后,会缓存下来这个资源。使用RES.destroyRes(name:string):boolean,传入资源文件的name,即可清理对应的缓存。传入资源组名,即可清理整个资源组里所有资源对应的缓存。如果要销毁通过RES.getResByUrl(url)加载的资源,传入url作为name即可。
由于目前JS里没有弱引用字典,无法实现资源的自动回收,所以还需要手动去销毁缓存的资源。

所以目前白鹭是没有自动回收不用资源的。

有没有好的资源回收的方法?

求解,引擎版本 ,5.2.15

分享到 :
0 人收藏

1 个回复

倒序浏览
山猫  初窥堂奥 | 2019-3-12 14:04:48
三、垃圾回收、资源卸载、释放内存
内存管理

Javascript垃圾回收

阮一峰 JavaScript 内存泄漏教程

垃圾回收方式:标记清除、引用计数

垃圾回收时间:固定间隔、上限

游戏中除了常用的事件监听的移除、对象引用设置为null等等,对于资源加载使用后,也要即时卸载。
https://www.cnblogs.com/gamedaybyday/p/9095545.html


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部