diff --git a/assets/Scene/example_ui.fire b/assets/Scene/example_ui.fire index 9fcda3a..3ea5c70 100644 --- a/assets/Scene/example_ui.fire +++ b/assets/Scene/example_ui.fire @@ -73,6 +73,9 @@ "_components": [ { "__id__": 5 + }, + { + "__id__": 6 } ], "_prefab": null, @@ -227,5 +230,15 @@ "_fitWidth": false, "_fitHeight": true, "_id": "105OSN3A9FN6bqyKHCAZAF" + }, + { + "__type__": "1ac13Sq8cxLKZtQe1hCgor0", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "_id": "e2iDQEL+dHDKK4GSCMZ1tN" } ] \ No newline at end of file diff --git a/assets/Script/example/UIExample.ts b/assets/Script/example/UIExample.ts index b94bc6e..b2c3b48 100644 --- a/assets/Script/example/UIExample.ts +++ b/assets/Script/example/UIExample.ts @@ -1,4 +1,5 @@ import { UIConf, uiManager } from "../ui/UIManager"; +import { resLoader } from "../res/ResLoader"; // Learn TypeScript: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/typescript.html diff --git a/assets/Script/example/uiviews/UILogin.ts b/assets/Script/example/uiviews/UILogin.ts index ff1044a..fe75a4d 100644 --- a/assets/Script/example/uiviews/UILogin.ts +++ b/assets/Script/example/uiviews/UILogin.ts @@ -9,7 +9,7 @@ export default class UILogin extends UIView { public onLogin() { // 连续打开2个界面 - uiManager.open(UIID.UIHall); + uiManager.replace(UIID.UIHall); uiManager.open(UIID.UINotice); } } diff --git a/assets/Script/res/ResLoader.ts b/assets/Script/res/ResLoader.ts index 69bca3a..631e49e 100644 --- a/assets/Script/res/ResLoader.ts +++ b/assets/Script/res/ResLoader.ts @@ -250,7 +250,9 @@ export class ResLoader { if (cacheInfo.uses.size == 0 && cacheInfo.refs.size == 0) { //如果没有uuid,就直接释放url - if (item.uuid) { + if(this._isSceneDepend(item.url)) { + cc.log("resloader skip release scene depend assets :" + item.url); + } else if (item.uuid) { cc.loader.release(item.uuid); cc.log("resloader release item by uuid :" + item.id); } else { @@ -261,6 +263,16 @@ export class ResLoader { } } + private _isSceneDepend(itemUrl) { + let scene : any = cc.director.getScene(); + let len = scene.dependAssets.length; + for( let i = 0; i < len; ++i) { + if (scene.dependAssets[i] == itemUrl) + return true; + } + return false; + } + /** * 判断一个资源能否被释放 * @param url 资源url