From 6baa47cc18c1908708090ed90d5b846573785968 Mon Sep 17 00:00:00 2001 From: dgflash Date: Mon, 18 Jul 2022 13:48:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=A0=E8=BD=BD=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E7=9A=84=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/demo/loader/Main.ts | 7 ++- .../assets/core/common/loader/ResLoader.ts | 52 +++++++++++++------ 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/assets/demo/loader/Main.ts b/assets/demo/loader/Main.ts index 08043df..45bea50 100644 --- a/assets/demo/loader/Main.ts +++ b/assets/demo/loader/Main.ts @@ -2,7 +2,7 @@ * @Author: dgflash * @Date: 2022-07-14 10:57:43 * @LastEditors: dgflash - * @LastEditTime: 2022-07-18 12:43:16 + * @LastEditTime: 2022-07-18 13:47:16 */ import { ImageAsset, Node, Sprite, SpriteFrame, Texture2D, _decorator } from 'cc'; import { IRemoteOptions, resLoader } from '../../../extensions/oops-framework/assets/core/common/loader/ResLoader'; @@ -21,6 +21,7 @@ export class Main extends Root { sprite: Node = null!; private url = "https://oops-1255342636.cos-website.ap-shanghai.myqcloud.com/oops-framework/assets/resources/native/00/0021cb5a-e4f0-4709-b0b6-5e21875720b7.3d6ea.png"; + // private cache: any = {}; btnLoader() { var opt: IRemoteOptions = { ext: ".png" }; @@ -32,6 +33,7 @@ export class Main extends Root { var sprite = this.sprite.getComponent(Sprite) || this.sprite.addComponent(Sprite); sprite.spriteFrame = spriteFrame; data.addRef(); + // this.cache[data.nativeUrl] = spriteFrame; } resLoader.loadRemote(this.url, opt, onComplete); } @@ -51,7 +53,8 @@ export class Main extends Root { } if (texture) { - texture.image?.decRef(); + // delete this.cache[texture.image!.nativeUrl]; + texture.image!.decRef(); texture.destroy(); } spFrame.destroy(); diff --git a/extensions/oops-framework/assets/core/common/loader/ResLoader.ts b/extensions/oops-framework/assets/core/common/loader/ResLoader.ts index 97ec40a..ee3058b 100644 --- a/extensions/oops-framework/assets/core/common/loader/ResLoader.ts +++ b/extensions/oops-framework/assets/core/common/loader/ResLoader.ts @@ -15,6 +15,27 @@ interface ILoadResArgs { } export default class ResLoader { + /** + * 加载远程资源 + * @param url 资源地址 + * @param options 资源参数,例:{ ext: ".png" } + * @param onComplete + */ + public loadRemote(url: string, options: IRemoteOptions | null, onComplete?: CompleteCallback | null): void; + public loadRemote(url: string, onComplete?: CompleteCallback | null): void; + public loadRemote(url: string, ...args: any): void { + var options: IRemoteOptions | null = null; + var onComplete: CompleteCallback | null = null; + if (args.length == 2) { + options = args[0]; + onComplete = args[1]; + } + else { + onComplete = args[0]; + } + assetManager.loadRemote(url, options, onComplete); + } + /** * 加载资源包 * @param url 资源地址 @@ -32,6 +53,14 @@ export default class ResLoader { }); } + /** + * 加载一个资源 + * @param bundleName 远程包名 + * @param paths 资源路径 + * @param type 资源类型 + * @param onProgress 加载进度回调 + * @param onComplete 加载完成回调 + */ public load(bundleName: string, paths: string | string[], type: AssetType | null, onProgress: ProgressCallback | null, onComplete: CompleteCallback | null): void; public load(bundleName: string, paths: string | string[], onProgress: ProgressCallback | null, onComplete: CompleteCallback | null): void; public load(bundleName: string, paths: string | string[], onComplete?: CompleteCallback | null): void; @@ -58,6 +87,14 @@ export default class ResLoader { this.loadByArgs(args); } + /** + * 加载文件夹中的资源 + * @param bundleName 远程包名 + * @param dir 文件夹名 + * @param type 资源类型 + * @param onProgress 加载进度回调 + * @param onComplete 加载完成回调 + */ public loadDir(bundleName: string, dir: string, type: AssetType | null, onProgress: ProgressCallback | null, onComplete: CompleteCallback | null): void; public loadDir(bundleName: string, dir: string, onProgress: ProgressCallback | null, onComplete: CompleteCallback | null): void; public loadDir(bundleName: string, dir: string, onComplete?: CompleteCallback | null): void; @@ -85,21 +122,6 @@ export default class ResLoader { this.loadByArgs(args); } - public loadRemote(url: string, options: IRemoteOptions | null, onComplete?: CompleteCallback | null): void; - public loadRemote(url: string, onComplete?: CompleteCallback | null): void; - public loadRemote(url: string, ...args: any): void { - var options: IRemoteOptions | null = null; - var onComplete: CompleteCallback | null = null; - if (args.length == 2) { - options = args[0]; - onComplete = args[1]; - } - else { - onComplete = args[0]; - } - assetManager.loadRemote(url, options, onComplete); - } - /** 通过资源相对路径释放资源 */ public release(path: string, bundleName: string = "resources") { var bundle = assetManager.getBundle(bundleName);