| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { _decorator, assert, Asset, AssetManager, assetManager, Component, JsonAsset, Material, Node, Sprite, SpriteFrame } from 'cc';
- import { ModuleDef } from '../../scripts/ModuleDef';
- const { ccclass, property } = _decorator;
- export class ResUtil {
- private static resMap = new Map<string | number, any>
- static loadDir(assType: AssetType, cb, util_cb?) {
- let boude = assetManager.getBundle(assType.boundName)
- let res = (bundle: AssetManager.Bundle) => {
- bundle.loadDir(assType.path, assType.type, function (err, assets: any[]) {
- if (err) {
- console.log(err);
- return;
- }
- for (let i = 0; i < assets.length; i++) {
- util_cb && util_cb(assets[i], i)
- }
- cb(assets);
- });
- }
- if (!boude) {
- assetManager.loadBundle(assType.boundName, assType.type, (err, bundle: AssetManager.Bundle) => {
- if (err) {
- console.log(err);
- return;
- }
- res(bundle)
- })
- } else {
- res(boude)
- }
- }
- static loadResToMap(assType: AssetType, toMap: (res) => any, cb?) {
- if (ResUtil.resMap.has(assType.id)) {
- cb?.()
- return
- }
- this.loadDir(assType, (res) => {
- ResUtil.resMap.set(assType.id, toMap(res))
- cb?.()
- })
- }
- static getAsset(assetType: AssetType) {
- return ResUtil.resMap.get(assetType.id)
- }
- static loadAsset<T extends Asset>(bundleName: string, url: string): Promise<T> {
- return new Promise<T>((resolve) => {
- let bundle = assetManager.getBundle(bundleName)
- if (bundle) {
- bundle.load(url, (err, data: T) => {
- if (err) {
- console.error(err)
- resolve(null)
- return
- }
- resolve(data)
- return
- })
- } else {
- assetManager.loadBundle(bundleName, (err, bundle: AssetManager.Bundle) => {
- if (err) {
- console.error(err)
- resolve(null)
- return
- }
- bundle.load(url, (err, data: T) => {
- if (err) {
- console.error(err)
- resolve(null)
- return
- }
- resolve(data)
- return
- })
- })
- }
- })
-
- }
- }
- export const AssetType = ({
- // card_sprite: { id:0,type: SpriteFrame, path: "image/card",boundName:ModuleDef.EXTRA} as AssetType,
- Json: { id: 1, type: JsonAsset, path: "json", boundName: ModuleDef.EXTRA } as AssetType,
- })
- export type AssetType = {
- type: any,
- path: string
- boundName: string
- id: string | number
- }
|