Cocos 资源管理器

资源管理器

导表

// 类别:{  // 一个类别下面会存在很多资源,他们拥有相同的路径,相同的类型
        //     path:通用路径,
        //     type:通用类型,
        //     list:具体资源名列表,
        // },

资源管理器

	// 构造函数 当这个类实例化的时候,会被系统调用
    // 还有一个析构函数,当实例被释放的时候,会被系统调用
	class CRes{
    // 构造函数 当这个类实例化的时候,会被系统调用
    // 还有一个析构函数,当实例被释放的时候,会被系统调用
    constructor(){
        this.loadNum = -1;  // 记录当前仍在加载的资源类别数量
        this._data = {};    // 资源数据存放位置
    }

    getLoadNum(){
        return this.loadNum;
    }

    // 资源管理器启动加载入口,想要让管理器自动去加载资源,必须调用此函数
    loadRes(){
        this.loadNum = 0;
        for (let key in TABLE){
            this.loadNum++;
            this.doLoad(key);
        }
    }

    doLoad(key){
        let info = TABLE[key];
        let pathList = [];
        for (let name of info.list){
            pathList.push(info.path + name)
        }

        this._data[key] = {}
        // 分帧加载
        let func = ()=>{    // 从pathList中取5个进行加载
            let tempList = pathList.splice(0, 3);
            // cc.loader.loadRes(
            //     路径,
            //     类型
            //     回调
            // )
            // cc.loader.loadResArray(
            //     路径列表,  // 要求全部都是完整路径,类型必须一致
            //     类型,
            //     回调
            // )
            cc.loader.loadResArray(
                tempList,
                info.type,
                (err, resList)=>{
                    if (err){
                        cc.log(err);
                        return;
                    }
                    for (let res of resList){
                        this._data[key][res.name] = res;
                    }
                    if (pathList.length > 0){
                        func();
                    }
                    else{
                        this.loadNum--;
                    }
                }
            )
        };
        func();
    }
    getRes(key, name){
        if (this._data[key]){
            return this._data[key][name];
        }
    }
}

资源管理器知识点:

通过导表和插件的功能,将素材全部用一个全局变量存放,同时用了
cc.loader.loadResArray(),这个异步函数,实现了分帧加载的功能,
并且在此之上可以将loadNum加载的资源数以进度条的方式显示出来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值