From e800d09c5796a59611c753decdd02a358e550964 Mon Sep 17 00:00:00 2001 From: wyb10a10 Date: Sat, 30 Jan 2021 11:46:03 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=B5=84=E6=BA=90=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E3=80=91=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E8=AE=A1=E6=95=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/Script/example/ResKeeperExample.ts | 6 +++--- assets/Script/res/ResManager.ts | 10 ++++++---- 2 files changed, 9 insertions(+), 7 deletions(-) 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); } }