大厅+子游戏 目前实现方式综合 全新大讨论

按理说上面是对的 吧 你 main。js 和饿 dating。js 发我 看看

你的系统版本

main.js

(function () {

'use strict';
var _CCSettings = null ;

var  settings = null;

cc.INGAME = (jsb.fileUtils ? jsb.fileUtils.getWritablePath() : '/') + "ALLGame/subgame/";

if(!cc.subgame ){

    require(cc.INGAME+'src/settings.js');
    cc.subgame =  settings = window._CCSettings;

    settings["scenes"].push({"url":"db://assets/hall.fire","uuid":"7brp21UJhJsLMGvPc8eZqF"});

    require(cc.INGAME+'src/project.dev.js');

}else{

    settings = cc.subgame;
}

window._CCSettings = undefined;

var scenes = settings.scenes;
for (var i = 0; i < scenes.length; ++i) {
    var scene = scenes[i];
    if (typeof scene.uuid === 'number') {
        scene.uuid = uuids[scene.uuid];
    }
}

var packedAssets = settings.packedAssets;
for (var packId in packedAssets) {
    var packedIds = packedAssets[packId];
    for (var j = 0; j < packedIds.length; ++j) {
        if (typeof packedIds[j] === 'number') {
            packedIds[j] = uuids[packedIds[j]];
        }
    }
}


var onStart = function () {
    cc.view.resizeWithBrowserSize(true);
    // UC browser on many android devices have performance issue with retina display
    if (cc.sys.os !== cc.sys.OS_ANDROID || cc.sys.browserType !== cc.sys.BROWSER_TYPE_UC) {
        cc.view.enableRetina(true);
    }
    //cc.view.setDesignResolutionSize(settings.designWidth, settings.designHeight, cc.ResolutionPolicy.SHOW_ALL);



    if (cc.sys.isMobile) {
        if (settings.orientation === 'landscape') {
            cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
        }
        else if (settings.orientation === 'portrait') {
            cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
        }
        // qq, wechat, baidu
        cc.view.enableAutoFullScreen(
            cc.sys.browserType !== cc.sys.BROWSER_TYPE_BAIDU &&
            cc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT &&
            cc.sys.browserType !== cc.sys.BROWSER_TYPE_MOBILE_QQ
        );
    }

    // Limit downloading max concurrent task to 2,
    // more tasks simultaneously may cause performance draw back on some android system / brwosers.
    // You can adjust the number based on your own test result, you have to set it before any loading process to take effect.
    if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
        cc.macro.DOWNLOAD_MAX_CONCURRENT = 2;
    }


    // init assets
    cc.AssetLibrary.init({
        libraryPath: cc.INGAME +'res/import',
        rawAssetsBase: cc.INGAME +'res/raw-',
        rawAssets: settings.rawAssets,
        packedAssets: settings.packedAssets,
        md5AssetsMap: settings.md5AssetsMap
    });

    var launchScene = settings.launchScene;

    // load scene
    if (cc.runtime) {
        cc.director.setRuntimeLaunchScene(launchScene);
    }
    cc.director.loadScene(launchScene, null,
        function () {
            if (cc.sys.isBrowser) {
                // show canvas
                canvas.style.visibility = '';
                var div = document.getElementById('GameDiv');
                if (div) {
                    div.style.backgroundImage = '';
                }
            }
            cc.loader.onProgress = null;

            // play game
            // cc.game.resume();

            console.log('Success to load scene: ' + launchScene);
        }
    );
};

// jsList
var jsList = settings.jsList;
var bundledScript = settings.debug ? cc.INGAME+'src/project.dev.js' : cc.INGAME+'src/project.js';
if (jsList) {
    jsList = jsList.map(function (x) { return cc.INGAME+'src/' + x; });
    jsList.push(bundledScript);
}
else {
    jsList = [bundledScript];
}

var option = {
    //width: width,
    //height: height,
    id: 'GameCanvas',
    scenes: settings.scenes,
    debugMode: settings.debug ? cc.DebugMode.INFO : cc.DebugMode.ERROR,
    showFPS: settings.debug,
    frameRate: 60,
    jsList: jsList,
    groupList: settings.groupList,
    collisionMatrix: settings.collisionMatrix,
    renderMode: 0
};

cc.game.run(option, onStart);

})();

1赞

dating.js

(function() {

// 这是为了解决一个重启的 bug 而添加的
cc.director.startAnimation();

'use strict';

var _CCSettings = null;


cc.INGAME = "";


if (!cc.dating) {
    require(cc.INGAME + 'src/settings.js');
    cc.dating = _CCSettings = window._CCSettings;
    require(cc.INGAME+'src/project.dev.js');
} else {
    _CCSettings = cc.dating;
}
var settings = _CCSettings;

console.log("============settings: " + settings.launchScene);

if (!settings.debug) {
    // retrieve minified raw assets
    var rawAssets = settings.rawAssets;
    var assetTypes = settings.assetTypes;
    for (var mount in rawAssets) {
        var entries = rawAssets[mount];
        for (var uuid in entries) {
            var entry = entries[uuid];
            var type = entry[1];
            if (typeof type === 'number') {
                entry[1] = assetTypes[type];
            }
        }
    }
}

// init engine
var canvas;
var onStart = function() {


    cc.view.resizeWithBrowserSize(true);

    if (cc.sys.os !== cc.sys.OS_ANDROID || cc.sys.browserType !== cc.sys.BROWSER_TYPE_UC) {
        cc.view.enableRetina(true);
    }

    if (cc.sys.isMobile) {
        if (settings.orientation === 'landscape') {
            cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
        } else if (settings.orientation === 'portrait') {
            cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
        }
        // qq, wechat, baidu
        cc.view.enableAutoFullScreen(
            cc.sys.browserType !== cc.sys.BROWSER_TYPE_BAIDU &&
            cc.sys.browserType !== cc.sys.BROWSER_TYPE_WECHAT &&
            cc.sys.browserType !== cc.sys.BROWSER_TYPE_MOBILE_QQ
        );
    }

    if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
        cc.macro.DOWNLOAD_MAX_CONCURRENT = 2;
    }



    // init assets
    cc.AssetLibrary.init({
        libraryPath: cc.INGAME + 'res/import',
        rawAssetsBase: cc.INGAME + 'res/raw-',
        rawAssets: settings.rawAssets,
        packedAssets: settings.packedAssets
    });

    var launchScene = "db://assets/hall.fire";
    cc.director.loadScene(launchScene, null, function() {});

};


// jsList
var jsList = settings.jsList;
var bundledScript = settings.debug ? 'project.dev.js' : 'project.js';
if (jsList) {
    jsList.push(bundledScript);
} else {
    jsList = [bundledScript];
}

// anysdk scripts
if (cc.sys.isNative && cc.sys.isMobile) {
    jsList = jsList.concat(['jsb_anysdk.js', 'jsb_anysdk_constants.js']);
}

jsList = jsList.map(function(x) { return cc.INGAME + 'src/' + x; });
var option = {
    //width: width,
    //height: height,
    id: 'GameCanvas',
    scenes: settings.scenes,
    debugMode: settings.debug ? cc.DebugMode.INFO : cc.DebugMode.ERROR,
    showFPS: 0,
    frameRate: 60,
    jsList: jsList,
    groupList: settings.groupList,
    collisionMatrix: settings.collisionMatrix,
    renderMode: 0
};
cc.game.run(option, onStart);

})();

android 7.1.1

cocos creater 1.7.0

1.7.zip (3.9 KB)

我的1.7.2的

顶下13哥0.0

:laughing:

大大,有没有完整的demo,可以学习下吗?

归档.zip (1.1 MB)

这位 名叫 thm521888 朋友 写的 demo

1赞

谢谢~

不是很清楚流程,

目前,大厅和所有的子游戏,都是单独的工程了,那么我打包和资源清单文件,请问,怎么生成呢?

生成热更新 文件 一样的方法 version_generator.js 子游戏里面的

1赞

三哥,好强。

热更新文件,是对所有项目都要生成吗?比如,大厅,游戏A,游戏B

对的 大厅何以 忽律 一般 不更新

好的,大概知道了,谢谢。

顶 三哥 好强

请问,修改成目前这套方案,那么web版本还能正常使用吗?

web 直接跳 子游戏 目录 这样去 实现

谢谢,在问个问题,大厅的资源能否共享呢?

资源确实在本地了,但在载入了子游戏场景后,在他的资源管理器中,估计没有对大厅的资源管理了!