ResourcesMgr.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { Asset, AssetManager, Prefab, resources, SpriteFrame, TiledMapAsset } from "cc";
  2. class ResourcesMgr{
  3. static instance: ResourcesMgr = null;
  4. private _spriteFrame: Map<string,SpriteFrame> = new Map();
  5. private _prefab: Map<string, Prefab> = new Map();
  6. private _tmxAsset: Map<number,TiledMapAsset> = new Map();
  7. async loadAllRes(path: string, onProgress:((finish: number,total: number, item: AssetManager.RequestItem)=>void) = null){
  8. //下载resources文件夹下的所有资源
  9. //异步函数
  10. const assets: Asset[] = await new Promise<Asset[]>((value, reject)=>{
  11. resources.loadDir(path, onProgress, (err:Error,assets: Asset[])=>{
  12. //完成回调 assets就是那些所有资源的数组
  13. if(err){
  14. reject(err);
  15. }
  16. else{
  17. value(assets);
  18. }
  19. })
  20. })
  21. //遍历所有资源 分门别类存储到对应的容器中
  22. for(const asset of assets){
  23. }
  24. }
  25. addRes(name: string | string, asset: Asset){
  26. if(asset instanceof SpriteFrame){
  27. this._spriteFrame.set(String(name), asset);
  28. }
  29. if(asset instanceof Prefab){
  30. this._prefab.set(String(name), asset);
  31. }
  32. if(asset instanceof TiledMapAsset){
  33. this._tmxAsset.set(Number(name), asset)
  34. }
  35. }
  36. getSpriteFrame(name: string): SpriteFrame{
  37. return this._spriteFrame.get(name);
  38. }
  39. getPrefab(name: string): Prefab{
  40. return this._prefab.get(name);
  41. }
  42. }
  43. export const resMgr: ResourcesMgr = ResourcesMgr.instance = new ResourcesMgr();