极简资源释放

组件的property引用的资源不会被释放掉。
预加载的资源需要增加一个白名单机制

Cocos v2.2.2 demo
fix 自动合图未处理的bug
fix 手动创建的spriteFrame未处理的bug
增加白名单机制
ResCleaner-cocos-v222.zip (446.5 KB)

1赞

老哥升到2.4了吗,最近我在升2.4,感觉坑有点多

试试这个呢?ResourceManager基于引用计数的资源管理

1赞

我准备直接升级到3.0版本了

private _decRef(asset: cc.Asset, delta: number = 1) {
    if (this.autoRelease && asset) {
        if (asset instanceof cc.MaterialVariant) {
            //@ts-expect-error
            asset = asset.material
        }
        let dynamicAsset = asset as DynamicAsset
        if (dynamicAsset._dynamic != DynamicState.STATIC && dynamicAsset._dynamic != DynamicState.UNUSE) {
            dynamicAsset._dynamic -= delta
            dynamicAsset._ref -= delta
            //引用计数不为0 可能是循环引用也需要做释放检测
            this.tryRelease(dynamicAsset._uuid)
        }
    }
}

计数只要减了,都try释放吗?

2.3以上本来底层就是引用计数,只需要自己去管理资源的使用就好,楼主的方案也只适合2.3及以下,通过楼主的这个方案和2.4自带的资源管理接口集合,就可以做一个体积小,兼容性强的资源管理器,我目前就是这么做的

1赞

markkkkkkk

动态引用计数减到0才检查啊

大佬有空帮忙指导一下呗,creator2.4.3 资源释放,内存无变化

1赞

for Creator 2.4
ResCleaner.zip (1.5 KB)

1赞

这个思路不错呀

从引擎源码里扣出来的

有3.x版本的吗

过两天吧··

嗯,有3.x版本的时候,@我下

马克~~~~

老哥,有了吗

最近项目要发版本7b5da26e-a331-4b8f-8aa6-56c55420861a

https://github.com/cocos-creator/engine/blob/fbd92ab01ffc4a40c42bb5342872ee0443432284/cocos/core/asset-manager/release-manager.ts 有需要的可自己参考哈

1赞