通过 CCD 缩减应用程序大小

为了吸引玩家下载您的游戏,一个好的做法是提供较小的应用程序初始大小,然后让玩家稍后根据需要下载新关卡和资源的文件。

本节使用一个示例项目来引导您将 CCD 和 Addressables 结合使用以缩减应用程序的大小。

缩减应用程序大小的过程摘要

缩减应用程序大小的过程摘要如下。每个步骤都将在本文档的后面部分展开。

  1. 安装 Addressables 和 CCD Management 包。
  2. 在 CCD 中配置一个存储桶。
  3. 为游戏创建一个新场景,或使用要通过 CCD 发送的现有关卡。
  4. 在 Unity 编辑器中配置您的资源。
  5. 设置脚本通过 Addressables 调用内容。
  6. 将新资源发布到 CCD Dashboard(CCD 后台)。

为了完成这些步骤,需要满足以下条件:

  • Unity 编辑器 2019.4 或更高版本
  • Addressables(最新版本;此示例使用版本 1.19.15)
  • CCD Management(最新版本;此示例使用版本 2.0.1)

安装所需的包

首先,确保您已安装所需的 Addressables 和 CCD Management 包。

  1. 在 Unity 编辑器中,选择 Window(窗口)> Package Manager(包管理器)
  2. 搜索 Addressables,选择版本 1.19.15+,然后选择 Install(安装)
  3. 搜索 CCD Management,选择版本 2.0.1+,然后选择 Install(安装)

在 CCD 中配置一个存储桶

在 Unity Gaming Services Dashboard(Unity 游戏服务后台)中创建和配置存储桶的步骤如下。

  1. 按照 CCD Dashboard(CCD 后台)的说明操作以访问 CCD 中的存储桶。

  2. 按照存储桶的说明操作以创建存储桶。

    1. 确保将 **Bucket write conditions(存储桶写入条件)**设置为 Open to all(向所有人开放)
    2. 选择 **Environment(环境)**时,将其设置为 Production(生产)
  3. 选择 **Create(创建)**以创建存储桶。

  4. 从存储桶列表中选择该存储桶。

  5. 选择 Upload Content(上传内容),然后从计算机上传任何文件。

    此步骤仅用于创建和获取存储桶的 URL。创建初始发布版本后,即可删除该文件。

  6. 刷新页面,然后创建发布版本

  7. 从 Releases(发布版本)选项卡中选择该发布版本。

  8. 选择 Addressable Remote Path URLs(Addressable 远程路径 URL)选项卡。

  9. 复制“Badge: Latest(标示:最新)”URL 供稍后在 Unity 编辑器中使用。

配置 Unity 编辑器

在 Unity 编辑器中进行以下设置以便继续执行缩减应用程序大小的过程。

  1. 转到 Window(窗口)> Asset Management(资源管理)> Addressables > Groups(组)
  2. 如果您以前未使用过可寻址资源 (Addressable Assets),必须选择 Create Addressables Settings(创建 Addressables 设置)
  3. 在 Addressables Groups(Addressables 组)窗口中选择 Profile(配置文件)> Manage Profiles(管理配置文件)
  4. 选择 Default(默认)配置文件。
  5. 将 **Remote(远程)**设置为 Custom(自定义)
  6. 展开 Remote(远程)字段,并将 Remote.LoadPath 设置为先前保存的 URL。
  7. 在 Unity 编辑器主窗口中,选择 Window(窗口)> Asset Management(资源管理)> Addressables > Settings(设置)
  8. 启用 Build Remote Catalog(构建远程目录)
  9. 将 **Build & Load Paths(构建和加载路径)**设置为 Remote(远程)

准备场景

接下来,准备一个或多个场景以通过 CCD 进行加载。确保您至少有一个不同于初始关卡的场景。

创建场景的过程超出了此用例的范畴。请参阅 Unity 手册:场景文档了解更多信息。

  1. 在 Unity 编辑器 Project(项目)选项卡的资源中找到您的场景。

  2. 在 Inspector(检视面板)选项卡中,启用 Addressable(可寻址)

    或者,将场景从 Project(项目)选项卡拖动到 Addressables Groups(Addressables 组)选项卡的 Default Local Group(默认本地组)中。

  3. 在 Addressables Groups(Addressables 组)选项卡中,右键单击该资源,然后选择 **Simplify Addressable Names(简化可寻址资源名称)**以便于阅读。

  4. 选择 Default Local Group(默认本地组)。

  5. 在 Inspector(检视面板)中:

    1. 将 **Build & Load Paths(构建和加载路径)**设置为
    2. 将 **Build Path(构建路径)**设置为 RemoteBuildPath
    3. 将 **Load Path(加载路径)**设置为 RemoteLoadPath
  6. 返回 Addressables Groups(Addressables 组)窗口,选择 Build(构建)> New Build(新建构建)> Default Build Script(默认构建脚本)

    如果以前运行过构建,则可以选择 Build(构建)> Update a Previous Build(更新以前的构建),然后选择该构建的 .bin 文件来更新构建。

比较构建(可选)

在此可选步骤中,一次使用场景来构建应用程序,另一次不使用场景来构建应用程序,然后比较两次构建的大小。在此测试应用程序中,大约有 30 MB 的大小差异。在具有更多关卡和资源的大型应用程序中,节省的大小会更大。

包含场景和资源的发布版本的大小(左)与不包含场景的发布版本的大小(右)。

配置脚本

在主场景(与项目一起构建的场景)中,确保添加用于加载下一个关卡的游戏按钮或事件。

为避免冲突,请务必从构建中排除通过 CCD 发送的任何场景。

您可以将以下示例脚本附加到游戏中的按钮。请务必在 Inspector(检视面板)中填写可寻址资源名称(在本例中为 sceneName)。

C#

using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
using UnityEngine.AddressableAssets;
 
public class LoadSceneCCD : MonoBehaviour
{
    public string sceneName = "";
 
    public void LoadTargetScene()
    {
        Addressables.LoadSceneAsync(sceneName, UnityEngine.SceneManagement.LoadSceneMode.Single, true);
    }
}

准备 AssetBundle 以便上传到后台

按照以下步骤准备要上传到后台的场景资源:

  1. 在 Unity 编辑器中,选择 Window(窗口)> Asset Management(资源管理)> Addressables > Groups(组)
  2. 选择 Build(构建)> New Build(新建构建)> Default Build Script(默认构建脚本)
  3. 构建完成后,在本地驱动器上转到项目文件夹,然后转到 ServerData\StandaloneWindows64。请注意,此文件夹可能因构建的目标平台而异。
  4. 记下以 .hash 和 .bundle 结尾的文件。

上传到后台

上传您在最近构建的 .hash 和 .bundle 文件(在上一步中生成)。如果这是第一次上传,请选择并上传所有文件。

  1. 返回 CCD Dashboard(CCD 后台)的存储桶页面。
  2. 选择您创建的存储桶。
  3. 在 Latest(最新)选项卡的 Entries(条目)下,选择 Upload Content(上传内容)选项卡。
  4. 浏览并选择在上一步中构建的文件。
  5. 选择 Upload Files(上传文件)
  6. 上传完成后,选择 Refresh Page(刷新页面)
  7. 选择 Create Release(创建发布版本),为新内容应用 Latest(最新)标示。

测试构建

您可以单击会触发加载 CCD 场景的按钮或操作来测试您的构建。如果一切顺利,您的 CCD 场景应该在一小段延时后加载。您的构建应该只包含主场景,不包含要通过 CCD 加载的关卡,否则不会缩减应用程序的大小。