目录

  • 什么是主包
  • 什么是首包
  • 加载流程
  •       框架主包
  •             一、新建一个空壳场景
  •             二、编写主包加载脚本
  •             三、场景设置
  •             四、简单总结
  • 什么是主包

    主包用于启动游戏,它是一个核心共享包。不属于分包的资源都会打进主包,包括 CCC 内置资源。因此,在开发时确保分包资源的独立性,避免依赖引用关系是非常必要的,这样可以大大减少主包的体积。

    什么是首包

    首包的出现是为了配合小游戏平台,提高加载速度。简单来说,它是一个剔除引擎的空包,唯一的作用是加载过渡。要使用首包功能,需要在发布时勾选【分离引擎】。

    加载流程

    我们仅分析在小游戏环境下的加载流程:

    1. 首次运行主包
      玩家第一次运行我们开发的小游戏程序【主包】。此时,程序会先判断玩家的手机是否已缓存过 CCC 引擎(例如,玩家曾玩过其他使用 CCC 开发的小游戏)。

    2. 判断引擎缓存

      • 已缓存:如果已有缓存,那么【首包】下载时会剔除掉 CCC 引擎。

      • 未缓存:如果没有缓存,【首包】下载时将包含完整的 CCC 引擎。


    以上是 CCC 引擎中主包和首包的概念。为了配合 CCC 对主包和首包的定义,我们的框架也采用了类似的构建方式。

    框架主包

    一、新建一个空壳场景

    新建一个空壳场景,仅用于加载【核心包】,不包含其他任何功能或资源,使用后销毁,以尽量减小体积。具体步骤如下:

    1. 在 CCC 【资源管理器】面板的 assets 目录下,右键创建名为 App 的文件夹。

    2. App 文件夹下创建一个名为 Main 的场景。

    3. App 文件夹下创建一个名为 MainEntry 的入口脚本,并将其拖拽到 Main 场景中。

    4. 删除 Main Light

    5. 删除 Main Camera

    6. 禁用天空盒子,去掉HDR和LDR默认的天空贴图。

    7. 最后,将视图从 3D 切换为 2D。
      空壳场景设置

    二、编写主包加载脚本

    我们将利用 AI 协助编写第一个代码,实现哪里不会问哪里 So Easy!!!
    具体步骤如下:

    1. 使用 AI 提问编写一个加载脚本。

    2. 点击 Copy 复制生成的代码。

    3. 将代码粘贴到代码编辑器中,进行简单的优化和修改。

     

    提问:

    使用ccc3.8.x api写一个加载Core分包,然后切换到分包下Game场景并运行,最后销毁当前脚本所在的场景的代码
    使用中文日志输出
    进行注释说明,方便阅读理解

    编写加载脚本

    1. 最终代码:

      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 场景设置为启动场景。
    设置启动场景

    四、简单总结

    1. 我们建立了一个空壳场景的【主包】,用于加载 Core 框架的核心包,即【首包】。

    2. 到此,我们已经迈出了使用 AI 编写框架的第一步。下一篇将开始构建 Core 框架的核心包。


    希望以上内容对你有所帮助,祝开发顺利!

    作者:ccs2d.com  创建时间:2024-09-12 05:38
    最后编辑:ccs2d.com  更新时间:2024-10-06 09:43