美文网首页
cocoscreator资源分包加载

cocoscreator资源分包加载

作者: 从不抱怨的小肚肚 | 来源:发表于2020-04-17 15:48 被阅读0次

    cocoscreator发布平台包含很多,QQ渠道要求比较严格些,主包最大支持4M,导致很多小游戏都需要做分包。

    资源分包 从 v2.0.7 开始支持。

    分包加载,即把游戏内容按一定规则拆分在几个包里,在首次启动的时候只下载必要的包,这个必要的包称为 主包,开发者可以在主包内触发下载其他子包,这样可以有效降低首次启动的消耗时间。

    下面就开始正题。 

    1.在creator中


    把需要分的包都这么操作,但是但是不可以把第一屏游戏的资源分出去,下面粘代码

    onLoad() {

            //分包加载

            var self = this;

            //初始化  注意先加这个

            //加载分包数量

            this.countSubPackge = 0;

            //是否切换了场景

            this.LoadSceneBool = false;

            //加载分包  第一个 分包名字   第二个需要跳转场景的名字   第三个分包总数量

            this.LoadSubPac('anims', 'load', 2);

            this.LoadSubPac('images', 'load', 2);

            //3S后切换场景   第一个 需要跳转场景的名字   第二个分包总数量

            this.scheduleOnce(function () {

                self.SceneMangerLoadScene('load', 2);

            }, 3);

        },

        //这是三个方法

        LoadSubPac (SubPackgeNameStr, LoadSceneNameStr, CountInt) {

            var self = this;

            console.log('开始加载分包');

            cc.loader.downloader.loadSubpackage(SubPackgeNameStr, function (err) {

                if (err) {

                    self.LoadSubPac(SubPackgeNameStr, LoadSceneNameStr, CountInt);

                    console.log('重新加载');

                    return;

                }

                self.SwitchLoadScene(LoadSceneNameStr, CountInt, SubPackgeNameStr)

            });

        },

        /**  跳转场景 三秒延迟跳转场景 */

        SceneMangerLoadScene(sceneName, PackageCount) {

            if (this.countSubPackge >= PackageCount) {

                cc.director.loadScene(sceneName);

                console.log('跳转场景');

            }

            else

                this.LoadSceneBool = true;

        },

        /** 跳转场景 */

        SwitchLoadScene(sceneName, PackageCount, SubName) {

            // cc.log("this.countSubPackge >= PackageCount    ", this.countSubPackge, +"   " + PackageCount);

            this.countSubPackge += 1;

            console.log('load subpackage successfully.--', SubName);

            if (this.LoadSceneBool == true && this.countSubPackge >= PackageCount) {

                cc.director.loadScene(sceneName)

                console.log('跳转场景');

            }

        },

    如果分不清到底什么资源会被第一屏占用  或者是因为游戏类型的关系  第一屏的资源都很大有个取巧的办法。

    重新建一个新的scene 作为游戏的第一个场景把它作为主包,主包中只包含一个脚本和一个scene  以上的代码就可以写在这个脚本里,最后跳转可以调到游戏的第一屏了,这样子包可以随意选了。


    以上内容为随手记录,方便日后自己看。

    如有雷同纯属巧合,转载请注明出处。

    相关文章

      网友评论

          本文标题:cocoscreator资源分包加载

          本文链接:https://www.haomeiwen.com/subject/ydhyvhtx.html