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