版本:Unity 6 (6000.0)
语言:英语
在 UDP 控制台中管理和发布您的游戏
在 UDP 构建中使用 Firebase

使用 UDP 与其他服务

重要
Unity 分发门户 (UDP) 将于 2025 年 2 月 17 日关闭。在此日期之后,UDP Web 控制台和服务将永久停用。要下载您的密钥库和有关如何将您的游戏直接重新发布到应用商店的说明,请访问 UDP 概述 页面。如果您对您的帐户有任何疑问,请向 Unity 客户支持 提交工单。

UDP 构建中的 Google Play 游戏服务

概述

在您的 Android 游戏中实现 Google Play 游戏服务 使您可以利用 Google 的服务层来实现成就和排行榜等功能。如果您的游戏实现了 Google Play 游戏服务,则需要进行额外的配置以支持 UDP 为不同商店创建的构建。

当您的游戏调用 Google Play 游戏服务时,Google Play 游戏服务会检查以下详细信息是否与 Google Play Console 中注册的信息匹配

  • 应用程序的包名称
  • 应用程序签署使用的证书

如果它们不匹配,玩家将无法使用 Google Play 游戏服务登录应用程序。

对于您通过 UDP 发布游戏的某些商店,UDP 会在包名称中添加特定于商店的后缀。此外,如果您不使用自己的私钥生成证书,UDP 会为每个重新打包的构建生成证书。这些事件会导致您的证书和/或包名称不再与 Google Play Console 中的信息匹配。这将阻止用户使用 Google Play 游戏服务登录游戏。

以下部分说明了如何解决此问题。

为 UDP 构建配置 Google Play 游戏服务

本节说明了如何将您的 UDP 版本链接到 Google Play 应用程序,以便 Google Play 游戏服务可以在所有版本上运行。

  1. 在 Google Play Console 中,转到目标应用。
  2. 转到Play 游戏服务>设置和管理>配置
    • 如果您的 Google Play 游戏已实现 Google Play 游戏服务,您的游戏将已链接到 Google Play 游戏服务项目。在这种情况下
      1. 选择使用现有 Play 游戏服务项目
      2. 选择您的游戏项目,然后选择使用
      3. 按照 将 UDP 应用链接到您的游戏服务 中的步骤操作。
    • 如果您的 Google Play 游戏未实现 Google Play 游戏服务
      1. 在 Play 游戏服务设置页面中,选择是,我的游戏已使用 Google API否,我的游戏未使用 Google API
      2. 按照 创建和链接 Google Play 游戏服务项目 中的步骤操作。

创建和链接 Google Play 游戏服务项目

本节说明了如何创建 Google Play 游戏服务项目并将其链接到新的或现有的云项目。

如果您在 Play 游戏服务设置页面中选择了是,我的游戏已使用 Google API

  1. 选择云项目。
  2. 选择使用以创建一个新的 Play 游戏服务项目并将其链接到您现有的云项目。

如果您在 Play 游戏服务设置页面中选择了否,我的游戏未使用 Google API

  1. 输入游戏名称。
  2. 选择创建以创建一个新的 Play 游戏服务项目并将其链接到新的云项目。

创建新的 Play 游戏服务项目时,添加凭据链接将被禁用。

  1. 选择配置 OAuth 同意屏幕
  2. 在 Play 游戏服务配置屏幕中,选择刷新。
    现在,添加凭据选项已启用。
  3. 选择添加凭据
    这将打开添加凭据页面。
  4. 在添加凭据页面中
    1. 选择Android 作为类型
    2. 启用反盗版设置为关闭。这允许用户访问他们的游戏,即使他们是从 Google Play 以外的应用商店安装的。
    3. 在授权部分,选择创建 OAuth 客户端。这将打开一个弹出窗口。
    4. 选择创建 OAuth 客户端 ID 并使用弹出窗口中的详细信息填写表单。

完成上述步骤后,您的 Google Play 游戏将链接到其 Google Play 游戏服务。下一步是 将您的 UDP 构建链接到游戏服务

将 UDP 应用链接到您的游戏服务

将您的应用链接到 Google Play 游戏服务后,您可以将其他(UDP)应用链接到游戏服务。

  1. 在 Google Play Console 中,选择Play 游戏服务>设置和管理>配置
    1. 在 Play 游戏服务配置页面中,选择添加凭据
  2. 在添加凭据页面中
    1. 选择Android
    2. 启用反盗版设置为关闭。这允许用户访问他们的游戏,即使他们是从 Google Play 以外的应用商店安装的。
    3. 授权部分,选择创建 OAuth 客户端。这将打开一个弹出窗口。
    4. 选择创建 OAuth 客户端 ID 并使用弹出窗口中的详细信息填写表单。
  3. 在创建 OAuth 客户端 ID 表单中,输入必要的详细信息以创建一个用于您的 UDP 构建之一的条目。
    1. 名称字段中,以相应的商店命名构建,例如“三星版本”。
    2. 包名称字段中,指定通过 UDP 控制台注册到相应商店的构建的包名称。
      特定于商店的包名称显示在 UDP 控制台中
      1. 转到我的游戏>发布选项卡。
      2. 选择相应商店的高级
        包名称显示在基本信息部分。
    3. 在证书字段中,使用用于相应 UDP 商店的证书。UDP 在重新打包操作后使用新证书对应用进行签名。
      特定于商店的证书显示在 UDP 控制台中
      1. 转到我的游戏>发布选项卡。
      2. 选择相应商店的高级
        证书显示在基本信息部分。
        注意:您也可以下载 APK 证书并通过以下命令获取指纹信息
        openssl x509 -in [downloaded-pem-filepath] -fingerprint -noout
      3. 将 UDP 控制台中的 SHA-1 复制到证书字段。
  4. 完成表单后,选择创建并返回到 Google Play Console。
  5. 选择刷新 OAuth 客户端
  6. 选择您的新 OAuth 客户端。
    1. 选择保存更改以保存凭据。
  7. 对您要链接到 Google Play 应用程序的每个特定于商店的 UDP 构建重复上述步骤。

您可以在 Google Cloud Platform > Google API 和服务仪表板的凭据下查看已链接到 Google Play 应用程序的 UDP 构建。

这些步骤使 Google Play 游戏服务能够成功地在所有以这种方式链接的 UDP 商店版本上运行,但不包括 Mi GetApps(其 SDK 集成了 Google Mobile Services 的旧版本,这会导致冲突)。

注意:对 Google 系统的任何更改都可能影响上述解决方案。有关 Google 的故障排除信息的更多信息,请参阅 Google 文档

在 UDP 中使用构建自动化

您可以使用 构建自动化Unity 项目的持续集成服务,可自动化在 Unity 服务器上创建构建的过程。 更多信息
查看 术语表
以以下方式将您的游戏部署到 UDP 控制台

通过构建自动化将构建推送到 UDP 控制台

本节说明了如何使用构建自动化将您的游戏推送到 UDP。在 Unity 编辑器中,在 项目设置一系列广泛的设置,允许您配置项目中物理、音频、网络、图形、输入和许多其他领域的运行方式。 更多信息
查看 术语表
窗口中启用构建自动化。

在编辑器中使用构建自动化将您的游戏部署到 UDP

要通过 Unity 编辑器中的构建自动化功能将您的游戏部署到 UDP,您需要上传您的 UDP 构建并将其推送到 UDP。

  1. 在项目设置窗口的构建自动化选项卡中,如果您之前从未上传过任何构建,请选择上传构建
  2. 文件
    • 选择您的 UDP 构建的 APKUnity 生成的 Android 包格式。当您选择文件>构建并运行时,APK 会自动部署到您的设备。 更多信息
      查看 术语表
    • 输入有用的标签
    • 平台字段设置为 Android。
  3. 选择上传,并让它完成上传过程。
  4. 在项目设置窗口的构建自动化选项卡中,从构建历史记录时间线中找到所需的构建,然后选择推送到 Unity 分发门户
    1. 确认您要推送,并确认操作已完成。

使用 Unity 仪表板将您的游戏部署到 UDP

要通过 Unity 仪表板中的构建自动化功能将您的游戏部署到 UDP,您需要将您的 UDP 构建上传到 Unity 仪表板,并从那里将其推送到 UDP。

  1. Unity 开发者仪表板 中,导航到您项目的构建自动化>历史记录
  2. 选择上传,然后选择您的 APK 文件。
  3. 平台字段中,选择Android
  4. 选择上传
  5. 选择构建旁边的更多菜单以展开下拉菜单。
  6. 选择推送到 Unity 分发门户

通过构建自动化构建和部署

如果您使用 Unity Teams Advanced,您可以 自动生成构建

在项目设置窗口的构建自动化选项卡中

  1. 选择管理构建目标>添加新的构建目标
  2. 目标设置窗口中,将平台字段设置为 Android,并输入有用的目标标签
  3. 选择下一步:保存
  4. 选择开始构建自动化,然后选择您刚刚创建的目标构建。

通过 Unity 构建自动化开发者仪表板(如上所示)将您的构建直接推送到 UDP。

服务互操作性

UDP 可以告诉您的游戏使用的其他服务游戏是从哪个商店下载的。

此信息可以以多种方式使用,既可以由 Unity 服务使用,也可以由第三方服务或您自己的服务使用。

例如,Unity 远程配置 允许您根据您定义的规则调整游戏设置,例如游戏是从哪个商店下载的。

本节介绍如何让其他服务访问此信息,并包括一个示例

它是如何工作的?

当您的游戏首次在玩家的设备上启动时,UDP 会在游戏的持久数据路径中创建并丢弃 udp.json 文件。该文件包含字段 udpStore,显示游戏是从哪个商店下载的。检索该信息以按照您的预期方式使用它。

注意: 这不会在您的游戏清单中添加任何新的权限。

定位 udp.json

文件 udp.json 存储在

Application.PersistentDataPath + '/Unity' + /Application.CloudProjectID + /udp/udp.json

其中

  • Application.PersistentDataPath 是您游戏的持久数据路径
  • Application.CloudProjectID 是您游戏的 Unity 项目 ID

以下是一个指向 udp.json 文件的路径示例

path/storage/emulated/0/Android/data/com.mystudio.mygame/files/Unity/c83d2de2-de74-4b75-83fc-ade948bda064/udp/udp.json

其中

  • Application.PersistentDataPath= path/storage/emulated/0/Android/data/com.mystudio.mygame
  • Application.CloudProjectID= c83d2de2-de74-4b75-83fc-ade948bda064

读取 udp.json

文件 udp.json 包含以下信息

{"key":"UDP","udpStore":"StoreName","udpClientId":"value_of_udpClientId","CloudProjectId":"value_of_CloudProjectId"}

字段 udpStore 包含您的游戏从哪个 UDP 商店下载的。

以下是一个 udp.json 文件的示例

{"key":"UDP","udpStore":"Huawei","udpClientId":"icjaB7wmu_q7AOjrSLH8yw","cloudProjectId":"bc2be074-09f3-450f-8e98-a0f79c9746f7"}

在本例中,游戏是从 HUAWEI AppGallery 下载的。

提示: 使用 JSONUtility.FromJsonOverwrite 将文件内容读取为文本资产。

udpStore 值

下表列出了您可以在 UDP 上获得的商店的 udpStore 值。

这些是区分大小写的。

商店(UDP 上的渠道名称) udpStore 的值
UDP 沙盒(适用于通用 UDP 构建) UdpSandbox
ONE 商店 OneStore
APPTUTTi Apptutti
Mi GetApps(小米) XiaomiStore
HUAWEI AppGallery Huawei
QooApp 游戏商店 QooApp
Uptodown Uptodown
SHAREit ShareIt
JioGames JioGames
Legion 商店 Legion

将 udpStore 与远程配置一起使用

Unity 远程配置 允许您调整游戏设置,而无需部署新版本的应用程序。当玩家启动您的游戏时,远程配置会检测用作规则条件的上下文属性(基于 Unity、应用程序、用户或您定义的自定义标准)。然后,该服务根据适用于每个玩家的规则返回自定义设置。

在您的规则条件中使用 udpStore 作为属性,这样您就可以确定取决于游戏是从哪个 UDP 商店下载的游戏设置。

要将 udpStore 与远程配置一起使用,请执行以下步骤。

  1. 下载并安装 UDP 包。
  2. 下载并安装Unity 远程一个可下载的应用程序,旨在帮助进行 Android、iOS 和 tvOS 开发。在您从 Unity 编辑器中以播放模式运行项目时,该应用程序会与 Unity 连接。 更多信息
    词汇表中查看
    配置包。请参阅 远程配置文档
  3. 创建一个 AppAttributes 结构,该结构至少具有一个参数“udpStore”。
    public struct AppAttributes { public string udpStore; }
  4. 在游戏代码中,实现远程配置 ConfigManager.FetchConfigs 调用。
  5. 调用 FetchConfigs 时,创建一个新的 AppAttributes 结构实例,从以下位置读取 UDP 商店数据文件:Application.PersistentDataPath + ‘/Unity’ + /Application.CloudProjectId + /udp/udp.json 使用 JSONUtility.FromJsonOverwrite 将文件内容读取为文本资产。
    { string udpFilePath = System.IO.Path.Combine(Application.persistentDataPath, "Unity", Application.cloudProjectId, "udp", "udp.json"); string udpFileContents = System.IO.File.ReadAllText(udpFilePath); var appAttr = JsonUtility.FromJson<AppAttributes>(udpFileContents); Unity.RemoteConfig.ConfigManager.FetchCompleted += ConfigManager_FetchCompleted; Unity.RemoteConfig.ConfigManager.FetchConfigs(null, appAttr); }
  6. 确保 AppAttributes 结构在 ConfigManager.FetchConfigs 中使用。
  7. 打开远程配置设置(服务 > 远程配置 > 配置),并创建您想要根据 UDP 商店更改的参数。
  8. 当参数设置好并在游戏代码中进行仪器化后,在远程配置窗口中为每个商店创建一个规则。
  9. 在每个规则的条件中,输入:app.udpStore == “[storeName]”
  10. 要启用设置,请选中远程配置设置中左侧面板上规则名称旁边的复选框。
  11. 将应用程序构建到设备并确保正确应用规则,然后将其发布。

使用 Unity IAP 为 UDP 实现 IAP 项目

如果您想使用Unity IAPUnity 应用内购买的缩写
词汇表中查看
实现 UDP,请先设置 Unity IAP

注意:如果您选择使用 Unity IAP 版本 1.22.0–1.23.5(而不是使用 UDP 包)实现 UDP,那么请仅通过 Unity IAP 实现。

Unity IAP 会自动处理以下操作

  • 初始化 UDP
  • 查询商店的 IAP 产品库存
  • 请求购买产品
  • 消费已购买的商品

但是,您的游戏必须根据Unity IAP 文档正确使用 Unity IAP 的类似功能(例如初始化和购买)。

当您使用 Unity IAP 实现游戏的应用内购买后,请执行以下步骤以设置 UDP 与 Unity IAP 的配合。

查询 IAP 库存

使用 Unity IAP(代码实现)

获取在编辑器中定义的 IAP 产品

获取要传递给 queryInventory 方法的 IAP 产品时,调用 ProductCatalog.LoadDefaultCatalog()。这将返回编辑器IAP 目录服务 > Unity IAP > IAP 目录)中定义的 IAP 产品。

例如

var catalog = ProductCatalog.LoadDefaultCatalog();

foreach (var product in catalog.allValidProducts)
{
   if (product.allStoreIDs.Count > 0)
   {
       var ids = new IDs();
       foreach (var storeID in product.allStoreIDs)
       {
           ids.Add(storeID.id, storeID.store);
       }
       builder.AddProduct(product.id, product.type, ids);
   }
   else
   {
       builder.AddProduct(product.id, product.type);
   }
}
从 UDP 控制台获取 IAP 产品信息

如果您计划在 UDP 控制台上修改游戏的 IAP 目录,请准备好您的游戏从 UDP 控制台获取 IAP 产品信息。

获取要传递给 queryInventory 方法的 IAP 产品时,调用 builder.AddProduct 以检索从 UDP 控制台定义的特定 IAP 产品

builder.AddProduct(product.id, product.type, new IDs{})

要显示产品价格(以货币格式),请使用 productInfo.Value.Price

从 UDP 控制台获取 IAP 目录

要检索在 UDP 控制台上定义的所有 IAP 产品,请不要调用任何 IAP 产品检索方法。然后,您的游戏将从 UDP 控制台获取整个 IAP 目录。

注意:在 UDP 控制台上上传 IAP 产品的 CSV 文件将完全覆盖您的 IAP 目录。

使用 Unity IAP 包填充 IAP 目录

添加和配置您的IAP 目录 所有用于 UDP 的应用内购买。

注意:如果您在游戏客户端中不使用 IAP 目录(例如,您仅在游戏服务器上维护 IAP 项目),您仍然必须在 UDP 控制台上创建 IAP 目录

  1. 在 Unity 编辑器中,选择服务 > Unity IAP > IAP 目录
  2. 选择添加产品并输入每个 IAP 产品的详细信息。
    1. 在 Unity 分发门户配置下添加 IAP 项目的价格。
  3. 要将 IAP 产品保存到 UDP 控制台,请选择同步到 UDP。对您创建的每个 IAP 产品执行此操作。

要确保正确保存 IAP 目录,请检查您添加的项目是否显示在 UDP 控制台中。

在 UDP 控制台中管理和发布您的游戏
在 UDP 构建中使用 Firebase