【cocos】加载页面和场景卡顿的原因?----预制体的预加载

10 篇文章 0 订阅

刚来cocos不久,发现切换场景或者打开页面超级卡,电脑浏览器的跳转都需要一秒多以上!

这已经是很注意资源优化了,把很多页面都搞成预制体代码预加载,没优化之前都有3秒,在手机上都五秒起步,安卓模拟器更是惊人的卡住二十秒!

再次检查,场景里面只有十几个散图,都是同一个图集的理论上非常快。然后是一个动画animation就没了。

哎!来回捣鼓了几小时,发现还有这个动画,检查发现比较大:

 

试试将这个独立的动画拖成预制体,然后也使用预加载,速度一下子回来了,50ms就完毕了!

 

 

然后说一下我当前使用的预加载:

做个脚本:


var FlyEventMgr = require("FlyEventMgr");

var FlyPrefabsMgr = cc.Class({
    extends: cc.Component,

    properties: {
        _loadedPrefabs: [cc.Node],
    },

    statics: {
        instance: null,
        getInstance() {
            if (FlyPrefabsMgr.instance == null) {
                FlyPrefabsMgr.instance = new FlyPrefabsMgr();
                FlyPrefabsMgr.instance.init();
            }

            return FlyPrefabsMgr.instance;
        },

    },

    init () {
    },

    //预加载预制体
    readyLoadPrefabs (urls) {
        let self = this;
        if (self._loadedPrefabs == null) {
            self._loadedPrefabs = {};
        }
        if (urls == null) {
            urls = ["LoadingView", "BigSkillReady" "FireParticle"];//这里放置一堆你需要提前加载的预制体
        }
        let loadCount = 0;
        for (let i = 0; i < urls.length; i++) {
            if (this._loadedPrefabs[urls[i]] != null) {
                loadCount++;
                self.eventPro(loadCount, urls.length);
            }
            else {
                let url = "prefabs/Fly/" + urls[i];
                cc.loader.loadRes(url, function (err, prefab) {
                    self._loadedPrefabs[urls[i]] = prefab;
    
                    loadCount++;//每次加载结束都计数抛事件出去,给loading进度条去接收
                    self.eventPro(loadCount, urls.length);
                });
            }
        }
    },

    /**抛事件当前进度*/
    eventPro(count, sum) {
        let proData = [count, sum];
        FlyEventMgr.getInstance().emit("LOAD_PRO", proData);
    },

    getPrafabByName(name) {
        if (this._loadedPrefabs != null && this._loadedPrefabs[name] != null) {
            return this._loadedPrefabs[name];
        }
        console.warn("不存在预加载的预制体:", name);
        return null;
    },


});

 

 

同理,配置/图片资源,都使用这种管理器提前加载。就是不断做这些被大佬取笑的轮子浪费我一天时间!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值