diff --git a/assets/Script/example/ResKeeperExample.ts b/assets/Script/example/ResKeeperExample.ts index 4e13818..d09bef0 100644 --- a/assets/Script/example/ResKeeperExample.ts +++ b/assets/Script/example/ResKeeperExample.ts @@ -19,6 +19,7 @@ export default class NetExample extends cc.Component { myNode.parent = this.attachNode; myNode.setPosition((Math.random() * 500) - 250, myNode.position.y); console.log(myNode.position); + prefab.decRef(); } }); } @@ -33,10 +34,9 @@ export default class NetExample extends cc.Component { ResLoader.load("images/test", cc.SpriteFrame, (error: Error, sp: cc.SpriteFrame) => { if (this.attachNode.childrenCount > 0) { let targetNode = this.attachNode.children[this.attachNode.childrenCount - 1]; - targetNode.getComponent(cc.Sprite).spriteFrame = ResUtil.assignWith(sp, targetNode); + targetNode.getComponent(cc.Sprite).spriteFrame = ResUtil.assignWith(sp, targetNode, true); } - //resLoader.releaseRes("images/test", cc.SpriteFrame); - ResLoader.release(sp); + sp.decRef(); }); } diff --git a/assets/Script/res/ResManager.ts b/assets/Script/res/ResManager.ts index 8329e9c..6b5e859 100644 --- a/assets/Script/res/ResManager.ts +++ b/assets/Script/res/ResManager.ts @@ -188,17 +188,19 @@ export default class ResManager { * 释放一个资源 * @param item 资源的item对象 */ - private releaseItem(item: any) { + private releaseItem(item: any, dec: boolean = false) { if (item && item.content) { let asset: any = item.content; let res = item.uuid || item.id; if (asset instanceof cc.Asset) { - asset.decRef(false); - if (asset.refCount == 0) { + if (dec) { + asset.decRef(false); + } + if (asset.refCount <= 0) { let depends = item.dependKeys; if (depends) { for (var i = 0; i < depends.length; i++) { - this.releaseItem(loader.getItem(depends[i])); + this.releaseItem(loader.getItem(depends[i]), true); } }