主包和首包
目录
什么是主包
主包用于启动游戏,它是一个核心共享包。不属于分包的资源都会打进主包,包括 CCC 内置资源。因此,在开发时确保分包资源的独立性,避免依赖引用关系是非常必要的,这样可以大大减少主包的体积。
什么是首包
首包的出现是为了配合小游戏平台,提高加载速度。简单来说,它是一个剔除引擎的空包,唯一的作用是加载过渡。要使用首包功能,需要在发布时勾选【分离引擎】。
加载流程
我们仅分析在小游戏环境下的加载流程:
首次运行主包
玩家第一次运行我们开发的小游戏程序【主包】。此时,程序会先判断玩家的手机是否已缓存过 CCC 引擎(例如,玩家曾玩过其他使用 CCC 开发的小游戏)。判断引擎缓存
已缓存:如果已有缓存,那么【首包】下载时会剔除掉 CCC 引擎。
未缓存:如果没有缓存,【首包】下载时将包含完整的 CCC 引擎。
以上是 CCC 引擎中主包和首包的概念。为了配合 CCC 对主包和首包的定义,我们的框架也采用了类似的构建方式。
框架主包
一、新建一个空壳场景
新建一个空壳场景,仅用于加载【核心包】,不包含其他任何功能或资源,使用后销毁,以尽量减小体积。具体步骤如下:
在 CCC 【资源管理器】面板的
assets
目录下,右键创建名为 App 的文件夹。在 App 文件夹下创建一个名为 Main 的场景。
在 App 文件夹下创建一个名为 MainEntry 的入口脚本,并将其拖拽到 Main 场景中。
删除 Main Light。
删除 Main Camera。
禁用天空盒子,去掉HDR和LDR默认的天空贴图。
最后,将视图从 3D 切换为 2D。
二、编写主包加载脚本
我们将利用 AI 协助编写第一个代码,实现哪里不会问哪里 So Easy!!!
具体步骤如下:
使用 AI 提问编写一个加载脚本。
点击 Copy 复制生成的代码。
将代码粘贴到代码编辑器中,进行简单的优化和修改。
提问:
使用ccc3.8.x api写一个加载Core分包,然后切换到分包下Game场景并运行,最后销毁当前脚本所在的场景的代码
使用中文日志输出
进行注释说明,方便阅读理解
最终代码:
import { _decorator, assetManager, Component, director } from 'cc'; const { ccclass } = _decorator; /** * 主包入口 * 仅用于加载过渡,用后销毁 */ @ccclass('MainEntry') export class MainEntry extends Component { start() { this.loadCore(); } /** 加载核心包 */ loadCore() { // 加载 Core 分包 assetManager.loadBundle('Core', (err, bundle) => { if (err) { console.error('加载 Core 包失败:', err); return; } // 加载完成后,切换到 Core 分包下的 Game 场景 bundle.loadScene('Game', (err, scene) => { if (err) { console.error('加载 Game 场景失败:', err); return; } // 运行指定的新场景 director.runScene(scene); // 销毁当前脚本所在的场景 const currentScene = director.getScene(); if (currentScene) { currentScene.destroy(); } }); }); } }
三、场景设置
将主包中的 Main 场景设置为启动场景。
四、简单总结
我们建立了一个空壳场景的【主包】,用于加载 Core 框架的核心包,即【首包】。
到此,我们已经迈出了使用 AI 编写框架的第一步。下一篇将开始构建 Core 框架的核心包。
希望以上内容对你有所帮助,祝开发顺利!
最后编辑:ccs2d.com 更新时间:2024-10-06 09:43