import { Asset, AssetManager, Prefab, resources, SpriteFrame, TiledMapAsset } from "cc"; class ResourcesMgr{ static instance: ResourcesMgr = null; private _spriteFrame: Map = new Map(); private _prefab: Map = new Map(); private _tmxAsset: Map = new Map(); async loadAllRes(path: string, onProgress:((finish: number,total: number, item: AssetManager.RequestItem)=>void) = null){ //下载resources文件夹下的所有资源 //异步函数 const assets: Asset[] = await new Promise((value, reject)=>{ resources.loadDir(path, onProgress, (err:Error,assets: Asset[])=>{ //完成回调 assets就是那些所有资源的数组 if(err){ reject(err); } else{ value(assets); } }) }) //遍历所有资源 分门别类存储到对应的容器中 for(const asset of assets){ } } addRes(name: string | string, asset: Asset){ if(asset instanceof SpriteFrame){ this._spriteFrame.set(String(name), asset); } if(asset instanceof Prefab){ this._prefab.set(String(name), asset); } if(asset instanceof TiledMapAsset){ this._tmxAsset.set(Number(name), asset) } } getSpriteFrame(name: string): SpriteFrame{ return this._spriteFrame.get(name); } getPrefab(name: string): Prefab{ return this._prefab.get(name); } } export const resMgr: ResourcesMgr = ResourcesMgr.instance = new ResourcesMgr();