UGS 发行说明

如何访问最新的软件包功能

请按照安装说明升级您的软件包。如果您在编辑器中没有看到软件包的最新版本,请确保您已更新到最新的LTS 或技术流版本

一些新功能是预发布版本;这些功能标有 pre 标签。详细了解如何使用预发布软件包

2024 年 6 月

应用内购买 SDK 4.12.1-pre.4

  • 新增: GooglePlay - 已添加 IGooglePlayStoreExtensions.GetObfuscatedAccountId(Product product) 以获取使用 IGooglePlayConfiguration.SetObfuscatedAccountId 设置的购买的混淆帐户 ID。

  • 新增: GooglePlay - 已添加 IGooglePlayStoreExtensions.GetObfuscatedProfileId(Product product) 以获取使用 IGooglePlayConfiguration.SetObfuscatedProfileId 设置的购买的混淆配置文件 ID。

  • 新增: Apple - 添加了 visionOS 支持

  • 变更: GooglePlay - 结算库已更新至 6.2.1(之前为 5.2.1)。未添加新功能支持。订阅必须仍然只有 1 个基本计划。

  • 变更: GooglePlay - 依赖项现在注入到 gradle 文件中。不再包含 Billing aar。

  • 变更: GooglePlay - 已更新内部实现以使用 productDetails 而不是 skuDetails 来解决 Google 发出的 setOfferToken 警告。

  • 变更: GooglePlay - IGooglePlayStoreExtensions.GetPurchaseState(Product product) 已更新为使用getPurchaseState() 而不是 getOriginalJson()。此更改将使购买状态更加可靠。

  • 变更: GooglePlay - IGooglePlayStoreExtensions.ConfirmSubscriptionPriceChange 已标记为 [Obsolete],因为自 Google Play 结算库 6.0.0 起不再支持该功能。有关替代方案,请参阅价格变更指南

  • 变更: GooglePlay - IStoreListener.OnInitializeFailed 对于 InitializationFailureReason.PurchasingUnavailable 现在将在产品检索成功但发生错误且未返回任何产品时返回 BillingResponseCode。

  • 变更: Apple - 从商店检索到的购买将被视为 appleProductIsRestored

  • 变更: Apple - Product.appleProductIsRestored 将不再发送到 ProcessPurchase,因为它们已经被处理。

  • 变更: Apple - 以上更改将通过避免重复购买事件来改进分析数据。

  • 变更: 已将 com.unity.services.core 从 1.8.2 升级到 1.12.5,以包含其 Apple 隐私清单。

  • 修复: 修复了 OnPurchaseFailed - 当产品不可购买时,它现在会在 PurchaseFailureDescription 中返回 productId(之前为 transactionId)。

  • 修复: 修复了在 Unity 引擎 2020 上检索产品时的 NullReferenceException。

  • 修复: GooglePlay - 修复了 Unity 引擎 2021.1 上与 CloneReference 相关的问题。

  • 修复: GooglePlay - 修复了在依赖项解析发生后添加依赖项导致错误的问题。

  • 修复: GooglePlay - 修复了 Product.receiptprice_amount_micros 返回价格而不是以微单位为单位的价格的问题。

  • 修复: GooglePlay - 修复了在 Unity 引擎 2021.2 及更早版本上检索产品时发生的 NullReferenceException

  • 修复: GooglePlay - 修复了使用无效 ProductID 时未触发 OnProductReceived 回调的问题。

  • 修复: GooglePlay - 修复了在 Windows 上禁用 IAP 依赖项时发生的问题。

  • 修复: GooglePlay - 修复了获取购买时可能发生的 InvalidOperationException。(自 Unity IAP 4.6.0 起)

  • 移除: GooglePlay - Product.receipt"Payload""skuDetails" 的子条目 iconUrlskuDetailsToken 现在将返回一个空字符串,因为它们不再受支持。

  • 移除: 移除不必要的 Android 依赖项 androidx.activity:activity-compose:1.3.1,这可能会导致与其他插件冲突。

核心 SDK 1.13.0

  • 新增: UnityServices 的初始化成功和失败事件。

CLI 1.5.0

  • 新增: 云存档模块服务命令。运行 ugs cloud-save -h 以显示用法。

  • 新增: 对匹配系统的部署和获取的支持。

  • 修复: 现在支持 --services 和 --key 选项上的多个条目。

  • 修复: 云内容分发中大文件内容上传失败或超时的问题。

云代码 SDK 2.7.1

  • 新增: 已将 MessageBytesReceived 回调添加到可用的订阅事件回调中

  • 新增: 向核心服务注册表注册服务

  • 新增: 通过核心服务注册表访问服务 (UnityServices.Instance.GetCloudCodeService())

  • 新增: 为云代码模块选择路径时浏览文件的按钮

  • 变更: 通过事件订阅接收字节时,将不再触发 MessageReceived 回调

  • 修复: 使用 ILogger 依赖项注入时绑定生成中断

  • 修复: 云代码模块现在在部署或生成绑定后清理编译工件

  • 修复: 云代码运行时超时增加到 30 秒

  • 修复: 将创建云代码资产菜单项移至“服务”下

工具 SDK 1.1.0

  • 修复: 关于 Unity.Services.Tooling.Editor 程序集为空的警告
  • 修复: 将创建访问控制配置菜单项移至“服务”下

2024 年 5 月

分析仪表板

  • 变更: 提高了仪表板中饼图的渲染性能
  • 变更: 事件管理器现在显示过去 24 小时内收到的有效和无效事件总数。

2024 年 4 月

Vivox(语音和文本聊天)

  • 发布: Vivox Unity 软件包的 16.3.0 版本。
    • 此版本将新的必需 PrivacyInfo.xcprivacy 文件添加到我们的 Apple 平台。
  • 发布: 所有 Vivox SDK 的 v5.23.1 版本。
    • 此版本将新的必需 PrivacyInfo.xcprivacy 文件添加到我们的 Apple 平台。

经济 SDK 3.4.0

  • 新增: 支持服务实例和全局访问点。

  • 新增: Apple 隐私清单,以符合 Apple 的新隐私要求。有关 Unity 引擎如何支持这一点的更多详细信息,请参见此处。

  • 变更: 已将 com.unity.services.core 从 1.12.0 升级到 1.12.5,以包含其 Apple 隐私清单。

  • 变更: 已将 com.unity.services.authentication 从 3.1.0 升级到 3.3.1,以包含其 Apple 隐私清单。

用户生成内容 SDK 3.0.1

  • 新增: Apple 隐私清单,以符合 Apple 的新隐私要求。有关 Unity 引擎如何支持这一点的更多详细信息,请参见此处。

  • 变更: 已将 com.unity.services.core 从 1.9.0 升级到 1.12.5,以包含其 Apple 隐私清单。

  • 变更: 已将 com.unity.services.authentication 从 2.5.0 升级到 3.3.1,以包含其 Apple 隐私清单。

核心 SDK 1.12.5

  • 新增: Apple 隐私清单文件 (PrivacyInfo.xcprivacy)。

  • 已修复: 可选的 FEATURE_SERVICES_INSTANCES 预处理器定义问题。

Tooling SDK 1.0.0

  • 新增: 访问控制的部署实现。
  • 新增: 用于创建访问控制配置的新文件上下文菜单项。
  • 新增: 访问控制配置资源检查器。
  • 新增: 访问控制部署文档。

CLI 1.4.0

  • 已修复: 改进了云代码脚本中脚本参数错误参数类型解析错误。

  • 已修复: 云内容分发模块服务命令。运行 ugs ccd -h 以显示用法。

  • 已更改: 环境列表命令现在以表格形式输出。

身份验证 SDK 3.3.1

  • 新增: 支持在使用多人玩家模式时运行不同的配置文件。

  • 新增: Apple 隐私清单。

  • 已修复:PlayerIDAccessTokenSessionToken 的事件处理程序抛出异常时,AuthenticationState 会处于无效状态。

  • 已修复: 如果未正确设置 Player Accounts SDK 并且应用程序收到深层链接请求,则会出现 NullReferenceException

2024 年 3 月

用例示例 2.0.0

  • 已更改: 这些用例现在与部署包兼容,并且可以使用部署窗口部署其大部分服务配置。

  • 已更改: 默认情况下将项目恢复到 2021.3,以便我们能够更轻松地与所有当前 LTS 版本兼容。

  • 已更改: 删除了 CCD 可寻址功能和无线内容用例。可寻址资源和 CCD 已在许多其他示例中进行了演示。

  • 已更改: 删除了广告功能和广告用例。广告已在许多其他示例中进行了演示。

  • 已修复: Battle Pass 自述文件中的虚拟购买密钥名称不正确。正确的密钥名称是 BATTLE_PASS_PURCHASE。

  • 已修复: Battle Pass 自述文件未列出 BATTLE_PASS_REWARDS_FREE 和 BATTLE_PASS_REWARDS_PREMIUM 密钥的完整游戏覆盖内容。这些内容已添加到单独的游戏覆盖文档文件中。

  • 已修复: 季节性活动自述文件中的云代码脚本名称错误。两者都应以 SeasonalEvents_ 前缀开头。

  • 已修复: 删除了阻止解析远程配置的旧字段。

  • 已修复: 云代码和虚拟商店的 WebGL 兼容性问题。

分析仪表板

  • 已发布: 数据浏览器 V2 公开测试版。
    • 包括全新改进的用户体验以及增强的功能,例如自定义维度。

Vivox(语音和文本聊天)

  • 已发布: Vivox Unity 软件包版本 16.2.0。
    • 此版本包含用于语音转文本的新 API 以及其他改进和错误修复。
    • 此版本引入了对 Windows ARM64 的支持。
  • 已发布: 所有 Vivox SDK 的 v5.23.0 版本。
    • 此版本包含各种错误修复和改进。

应用内购 SDK 4.11.0

  • 新增: IGooglePlayConfiguration.SetMaxConnectionAttempts(int maxConnectionAttempts),用于指定与 Google Play 商店的最大连接尝试次数。

  • 新增: 隐私清单,以符合 Apple 的新隐私要求。有关 Unity 引擎如何支持的更多详细信息,请参阅论坛

  • 新增: ConfigurationBuilder.logUnavailableProducts,用于指定是否应记录不可用的产品。

  • 已更改: GooglePlay - 与 Google Play 商店的默认最大连接尝试次数已从 1 次增加到 3 次。请参阅 IGooglePlayConfiguration.SetMaxConnectionAttempts 以将其配置为其他值。

  • 已更改: Apple - 检索产品 (SKProductsResponse) 时的日志现在还包含无效产品计数。

  • 已更改: 通过添加一条消息来阐明商店是否返回了产品,改进了 InitializationFailureReason.NoProductsAvailableIStoreListener.OnInitializeFailed

  • 已修复: GooglePlay - 修复了 AndroidJavaObject 未被处置导致边缘情况下全局引用表溢出的问题。

  • 已修复: GooglePlay - 修复了导致 BillingClient 重复导致 ANR 的错误。

  • 已修复: Apple - 修复了 tvOS 上的 isFamilyShareable,使其仅在受支持的版本(14.0 及更高版本)上可用。

  • 已修复: Apple - 购买失败时的错误代码现在始终返回 Apple 的代码,而不是默认为 SKErrorUnknown

  • 已修复: 分析的 transactionServer 为空的问题。

核心 SDK 1.12.4

  • 新增: 支持 -no-cloud-project-bind-popup 标志,以防止弹出窗口显示。

  • 已修复: 即使用户的项目已链接,重新导入软件包后,项目链接弹出窗口也会在编辑器启动时出现的错误。

  • 已修复: .NET Standard 目标的问题。

云代码 SDK 2.6.1

  • 新增: 改进了脚本内参数解析错误反馈。

  • 新增: 添加了最新 JavaScript 服务 SDK 的引用以用于自动完成。

  • 新增: 云代码绑定生成。

  • 已修复: 在项目窗口中选择 CloudCodeModuleReference 资源时的错误。

  • 已修复: 未初始化 Node 项目时的 JS 脚本导入。

云存档 3.1.1

  • 新增: 添加了 Apple 隐私清单。

  • 新增: 在与玩家数据交互时支持访问类,方法是向 CloudSaveService.Instance.Data.Player API 中的现有方法添加可选的 options 对象。有关访问类的更多信息,请参阅文档

    • 允许玩家将数据保存到公共访问类以及现有的默认访问类,这使得保存的数据对其他玩家可见。
    • 允许玩家从公共和受保护的访问类以及现有的默认访问类读取数据,其中受保护的玩家数据只能由服务器权威来源(例如云代码)设置。
    • 允许玩家读取其他玩家的公共玩家数据,方法是将他们的玩家 ID 作为新 options 对象的一部分提供。
  • 新增: 支持在公共玩家数据和默认自定义数据中进行查询,方法是使用新的 QueryAsync 方法。有关查询的更多信息,请参阅文档

    • 可以通过指定索引数据的过滤器(例如 clanMemberCount < 20)来查询已为其配置索引的任何数据。
    • 可以通过在 Query 对象中指定 ReturnKeys,检索作为查询响应的一部分返回的实体的任何数据(无论是否已编制索引)。
  • 已更改: 现有的 CloudSaveService.Instance.Data.Player.DeleteAsync 已标记为已弃用,并添加了一个新版本,该版本接受 CloudSave.Models.Data.Player.DeleteOptions 类型的选项,而不是 CloudSave.DeleteOptions。这允许添加新选项以支持访问类(请参阅上面的**新增**部分)。

大厅 SDK 1.2.0

  • 新增: EnableLocalPlayerLobbyEvents,用于启用/禁用由本地玩家触发的大厅事件。

CLI 1.3.0

  • 新增: 添加了新的服务模块调度程序。

  • 新增: 用于部署的 new-file

  • 新增: list,用于查看实时计划。

  • 新增: 支持调度程序服务以进行部署和提取。

  • 新增: 用于触发器的提取。

  • 新增: gsh 构建配置创建命令的 --readiness 选项。

  • 新增: gsh 构建配置更新命令的 --readiness 选项。

  • 新增: 游戏服务器托管 core-dump 命令,用于为核心转储配置外部存储位置(仅限 GCS)。

  • 新增: gsh 构建 create/create-version 命令的 --build-version-name 选项。

  • 已修复: 不存在的目录的 new-file 命令错误。

  • 已修复: 部署不再需要未部署服务的权限,除非指定了 reconcile。

  • 已修复: 修复了导致经济提取不幂等的错误。

  • 已修复: 修复了部署云代码模块时未报告加载后出现的问题。

  • 已修复: 修复了将解决方案部署为云代码模块时将使用解决方案路径而不是生成的 ccm 记录的问题。

  • 已更改: 改进了在部署没有明确主入口项目的解决方案时(用于云代码模块部署)的错误描述。

2024 年 2 月

云服务 API SDK 0.1.1(实验性)

新的实验性云服务 API 软件包通过使用我们的OpenAPI 规范提供对所有公共 API 的低级访问。这使您能够扩展 UGS 并构建自己的解决方案。

要在 Unity 编辑器中安装软件包,请在软件包管理器中选择**按名称安装软件包**,并添加软件包名称 com.unity.services.apis

有关此软件包的更多信息,请参阅Unity 论坛

  • 新增: API 编辑器示例和教程,可从**服务/API 示例**菜单项获取。

2024 年 1 月

身份验证 SDK 3.3.0

  • 新增:LastNotificationDate 字段,用于通知客户端玩家通知的最后创建时间。

  • 新增:GetNotificationsAsync 方法,客户端可以使用该方法请求玩家的通知。

  • 新增:Notifications 字段,用于在调用 GetNotificationsAsync 后缓存通知。

  • 新增:BannedUser 错误代码,用于在用户被禁止时识别异常。

  • 修复:身份验证刷新和过期计划依赖于设备时间,这可能会导致边缘情况。

2023 年 11 月

身份验证 SDK 3.2.0

  • 更改:Custom Token Exchange 身份提供程序更改为 Custom ID

  • 新增:PlayerInfo 添加了 GetCustomId 方法。

  • 新增:为支持多个应用程序 ID,添加了带有 appId 参数的 SignInWithSteamAsync 方法。

  • 新增:为支持多个应用程序 ID,添加了带有 appId 参数的 LinkWithSteamAsync 方法。

  • 新增:为支持多个应用程序 ID,为 Steam 身份提供程序添加了 Additional App IDs

  • 修复:玩家帐户设置的序列化问题。

核心 SDK 1.12.1

  • 更改:由于具有传递依赖项的意外重大更改,回滚了服务注册表中的接口约束。

用户生成内容 SDK 3.0.0

  • 更改:GetTagsAsync 现在仅返回当前环境的标签。
  • 更改:新的或更新的公共内容现在将为 public,而不是 publicGlobal

用户生成内容桥接器 3.0.0

  • 更改:GetTagsAsync 现在仅返回当前环境的标签。

安全语音 测试版

  • 改进:我们改进了安全语音中的毒性检测,将时刻级毒性误报率降低了 50%。
  • 新增:引入了一个名为“攻击性意图”的新毒性标签。此标签现在将突出显示以带有攻击性语调的极端语言为特征的玩家行为。

CLI 1.2.0

  • 新增:gsh fleet 命令下支持使用设置。

  • 新增:gsh server files listgsh server files download

  • 修复:接收无效响应时出现经济反序列化错误消息的问题。

  • 修复:部署排行榜无法删除分层和重置配置的问题。

推送通知

  • 修复:面向自定义受众的推送通知(其定义中包含日期比较)现已可以成功发送。
  • 新增:改进了 iOS 通知设置文档。

远程配置

  • 新增:模板功能,允许开发人员为其密钥设置 JSON 模式,为防止更改值破坏玩家体验增加一层安全保障。在模板文档中了解更多信息。

游戏覆盖

  • 新增:为游戏覆盖添加了对远程配置模板的支持,允许更安全地覆盖远程配置值。

部署 SDK 1.2.1

  • 新增:改进了使用多项服务时的整体 UI 性能。

2023 年 10 月

分析 SDK 5.0.1

  • 修复:当包含在某些事件中时,batteryLoad 和 deviceVolume 值不再过时。
  • 修复:Unity 玩家 ID 不再在某些事件中包含两次。
  • 修复:Unity 包管理器中的“配置”按钮现在可以正确链接到“项目设置”中的“分析 - 游戏服务”页面。
  • 修复:如果玩家在事件批处理上传过程中请求删除数据,则 ClearBuffer(...) 不再引发 ArgumentException。
  • 改进:记录事件时间戳和整数值现在速度稍快,并且生成的内存分配更少。
  • 更改:PrivacyUrl 属性现在返回指向最新的游戏玩家和应用程序用户隐私政策页面的链接:https://unity.com/legal/game-player-and-app-user-privacy-policy

身份验证 SDK 3.1.0

  • 新增:支持 Custom ID 身份提供程序。
  • 新增:ProcessAuthenticationTokens 方法,可以使用 SDK 进行自定义 ID 登录。
  • 新增:Unity.Service.Authentication.PlayerAccounts 包中支持 Unity 玩家帐户 身份提供程序。
  • 新增:PlayerAccounts.StartSignInAsync,用于开始 Unity 玩家帐户 登录流程。
  • 新增:PlayerAccounts.SignOut,用于注销当前玩家。

CLI 1.1.0

  • 新增:Bash 安装程序,用于在 MacOS 和 Linux 上下载和安装 UGS CLI

  • 新增:对经济模块的代码支持配置

    • 部署
    • 提取
  • 新增:对访问模块的代码支持配置

    • 部署
    • 提取
  • 新增:用于经济资源的 new-file 命令

    • 用于库存物品
    • 用于货币
    • 用于虚拟购买
    • 用于真实物品购买
    • 用于云代码 C# 模块
    • 用于项目访问策略
    • 用于触发器
  • 新增:部署时支持 .sln 文件

  • 新增:.sln 文件现在在部署前被编译并压缩到 .ccm 中

  • 新增:添加了对触发器的代码支持配置

    • 部署
  • 更改:服务可以支持多个文件扩展名

  • 更改:ugs gsh machine list 中更新了服务器状态

  • 修复:使用“部署”和包含不受支持配置类型的远程配置文件时处理异常。

  • 修复:如果排行榜加载失败,它会错误地部署为空排行榜并且不会报告的问题

  • 修复:在云代码部署在试运行期间出现重复文件错误时添加了正确的描述。

  • 修复:ugs gsh fleet-region update 无法确保默认情况下启用舰队区域的问题。

  • 修复:处理 ugs gsh fleet-region update 命令的拼写错误的布尔输入参数的异常。

  • 修复:“部署”和“提取”在包含 JSON 数组的远程配置上的问题。

应用内购 SDK 4.10.0

  • 更改:Unity 分发门户 - 应用内购将在不久的将来撤回对 UDP 的支持(公告待定)。在此之前,所有 UDP 功能将继续运行,但公共接口以及一些私有函数现在都标记为 [Obsolete]。在下一次重大更新中,所有这些都将被删除,并且 UDP 将停止使用该版本及后续版本的应用内购。
  • 更改:Unity 分发门户 - 如果编辑器无法连接到 UDP 后端,您现在可以在离线模式下使用某些 UDP 目录功能。这允许您继续输入价格;您必须手动同步价格。在这种情况下,Unity 建议您在重新建立连接后正确同步价格。如果编辑器无法连接到 UDP 后端,目录中会显示一条警告消息。
  • 更改:分析 - 旧版分析内置模块 com.unity.modules.unityanalytics 不再是依赖项;如果您不使用它,可以将其从项目中删除。如果您确实使用它,请确保它在您的项目中。
  • 更改:项目设置 - 在编辑器的“服务项目设置”页面中,我们更改了获取 Google Play 密钥的端点。此外,现在不是直接在编辑器中设置密钥,而是一个指向后端的仪表板链接,可以直接在后端设置密钥,以避免将来出现错误。
  • 修复:Google Play - 某些版本的 Unity 编辑器编译器会剥离分配给 Google Billing 模块作为回调的 GooglePurchaseUpdatedListener.onPurchasesUpdated,从而导致缺少购买失败回调,并记录 "No such proxy method:"。还为 BillingClientStateListener.onBillingServiceDisconnectedBillingClientStateListener.onBillingSetupFinishedSkuDetailsResponseListener.onSkuDetailsResponse 修复了此问题。

用户生成内容 SDK 2.0.0

  • 改进:快速入门指南和 API 文档。
  • 更改:com.unity.services.core 依赖项从 1.7.1 更新为 1.9.0
  • 更改:com.unity.services.authentication 依赖项从 2.4.0 更新为 2.5.0
  • 新增:ContentVisibility 选项:publicunlisted
  • 弃用:ContentVisibility 选项:publicGamepublicGlobal。请改用 public
  • 移除:ContentDTO 模型中移除了 OwnerAccountId
  • 移除:ContentStatistics 模型中移除了 ContentDownloadStatistics
  • 移除:ContentStatistics 模型中移除了 Subscribers
  • 移除:ContentStatistics 模型中移除了 ContentReportStatistics
  • 移除:ContentStatistics 模型中移除了 ContentRatingStatistics
  • 移除:ContentStatistics 模型中移除了 ContentPortalVisitStatistics

用户生成内容桥接器 2.0.0

  • **新增:**在“外部身份验证步骤”中使用外部身份验证的示例。
  • **新增:**通过身份验证包依赖项支持 OAuth 身份验证。
  • **新增:**依赖于版本为“3.0.0”的“com.unity.services.authentication”。
  • 新增:ContentVisibility 选项:publicunlisted
  • 弃用:ContentVisibility 选项:publicGamepublicGlobal。请改用 public

游戏覆盖

  • **新增:**能够创建具有统计显著性跟踪的 A/B 测试。有关如何利用此新功能的更多信息,请参阅A/B 测试
  • **更改:**目标指标现在仅适用于具有统计显著性跟踪的 A/B 测试。

远程配置 SDK 4.0.0

  • **更改:**不再支持 Unity 2019 和 2020,最低编辑器版本现在为 2021.3
  • **更改:**已将 com.unity.remote-config-runtime 依赖项更新为 4.0.1
  • **修复:**使用部署窗口部署包含 JSON 数组的远程配置时出现的问题

经济 SDK 3.3.0

  • **新增:**经济资源文件中的 Schema 字段。
  • **新增:**通过部署窗口或部署 API 支持经济资源部署。
  • **修复:**阻止部署包含 Schema 字段的经济资源的错误。
  • **修复:**部署省略 initial 和 max 的本地货币资源文件不会将远程资源更新为其默认值的错误。
  • **修复:**部署省略 customData 的本地资源文件不会将远程资源更新为默认 customData 的错误。
  • **修复:**当本地资源文件的内容无法反序列化时,会导致部署执行停止的错误。

云代码 SDK 2.5.1

  • **新增:**对云代码 C# 模块部署的编辑器支持。
  • **修复:**修复了云代码 C# 模块对包含多个项目的解决方案的创作支持。

排行榜 SDK 2.0.0

  • **新增:**所有分数获取方法中的可选对象元数据。如果已填充,则该对象将与分数一起存储。
  • **新增:**所有分数获取方法中的可选布尔值 includeMetadata。如果为 true,则分数的存储元数据将作为 LeaderboardEntry 的一部分返回。
  • **新增:**GetVersionsAsync 方法上的可选整数限制。如果设置,则只会返回最近限制数量的存档版本。
  • **新增:**GetVersionsAsync 现在返回字符串 versionId(排行榜的当前版本)和 int totalArchivedVersions(存储的已存档排行榜版本总数)。
  • **新增:**AddPlayerScoreAsync 方法上的可选字符串 versionId。如果设置,则 versionId 将与当前实时排行榜 versionId 进行比较。如果它们不匹配,则不会提交分数。
  • **新增:**对代码配置的编辑器支持。

游戏服务器托管 (Multiplay) SDK 1.1.1

  • **新增:**支持在编辑器中创作游戏服务器托管文件。
  • **新增:**对部署窗口的支持
  • **修复:**创建构建时,避免切换目标,因为这可能会导致域重新加载,而是发出警告

部署 SDK 1.2.0

  • **新增:**部署窗口中的“类型”新列。

核心 SDK 1.12.0

  • **新增:**服务注册表和用于启用实例和编辑时服务的新包初始化接口。
  • **修复:**解决了 IAccessTokens 达到速率限制的问题。

2023 年 9 月

语音和文本聊天 (Vivox)

  • **已发布:**Vivox Unity 软件包的 v16 版本。
    • Unity v16.0.0 是 Vivox API 的一项重大更新,需要手动更改。请按照16.0.0 升级指南将现有的 Unity Vivox 实现升级到此新版本。
    • 此版本还支持 Vivox 文本聊天公开测试版功能。
  • **已发布:**所有 Vivox SDK 的 v5.21.1 版本。
    • 此版本包含各种错误修复和改进。

推送通知 4.0.0-pre.1

  • **已发布:**4.0.0-pre.1 版本

  • **更改:**您现在只能在调用“RegisterForPushNotificationsAsync”之前订阅“OnNotificationReceived”

    • “RegisterForPushNotificationsAsync”完成后,如果应用是从远程通知启动的,则将调用“OnNotificationReceived”
  • **更改:**已将“com.unity.services.analytics”依赖项更新为“5.0.0”

  • **更改:**已将“com.unity.services.core”依赖项更新为“1.10.1”

  • **更改:**添加了“com.unity.mobile.notifications”版本“2.2.0”作为依赖项。

  • **修复:**现在,从 iOS 和 Android 启动应用时的行为(传入推送通知数据在“RegisterForPushNotificationsAsync”流完成后广播)

2023 年 8 月

身份验证 3.0.0

  • **新增:**“代码链接”身份提供者。
  • **新增:**用于“代码链接”身份提供者的“GenerateSignInCodeAsync”、“SignInWithCodeAsync”、“GetSignInCodeInfoAsync”和“ConfirmCodeAsync”API
  • **更改:**“GetPlayerNameAsync”接受“autoGenerate”参数,以防止其在玩家尚未创建玩家名称时自动生成玩家名称。

分析 SDK 5.0.0

  • **新增:**新的初始化和同意流程。请参阅迁移指南以获取更多信息:https://docs.unity.org.cn/ugs/en-us/manual/analytics/manual/sdk5-migration-guide
  • **已弃用:**不应再使用旧的初始化和同意流程,并将在 SDK 的未来版本中将其删除。请参阅迁移指南以获取更多信息:https://docs.unity.org.cn/analytics/en/manual/AnalyticsSDK5MigrationGuide
  • **更改:**已将“com.unity.services.core”依赖项更新为 1.10.1
  • **更改:**该软件包不再依赖于 Newtonsoft.Json
  • **更改:**该软件包现在依赖于 Unity JsonSerialize 模块 (JsonUtility)
  • **更改:**先前标记为已过时的许多元素现已删除
  • **修复:**如果无互联网连接,分析不再阻止服务初始化(“UnityServices.InitializeAsync”)
  • **修复:**现在可以在玩家之前选择退出的会话期间选择加入数据收集(需要迁移到新的同意流程)
  • **修复:**默认情况下拒绝访问文件系统的某些平台上不再请求 Application.persistentDataPath
  • **修复:**现在,事件缓冲区会在更广泛的服务器响应上清除
  • **修复:**事件在关闭时更急切地缓存到磁盘(如果可用),以防止在离线时关闭游戏导致数据丢失
  • **修复:**如果设置了自定义用户 ID,则现在使用该 ID 发送数据删除请求,而不是始终使用安装 ID

远程配置

  • **更改:**远程配置键的所有变体现在都显示在“游戏覆盖”表中。

2023 年 7 月

语音和文本聊天 (Vivox)

  • **已发布:**公开测试版中的 Vivox 文本聊天。
    • 包括以下功能:聊天记录、编辑/删除、自适应聊天过滤器、防洪、文本证据管理和大型频道支持。
  • **更改:**重大更改,导致以前版本的语音和文本聊天 (Vivox) 已过时。

游戏覆盖

  • **更改:**对广告系列详细信息页面的视觉改进。

推送通知测试版

  • **修复:**测试工具 UI 现在在提供无效令牌时返回警告。

身份验证

  • **新增:**具有“identity”参数的“SignInWithSteamAsync”和“LinkWithSteamAsync”方法,可提高安全性。
  • **更改:**将先前版本的“SignInWithSteamAsync”和“LinkWithSteamAsync”方法标记为已过时。
  • **新增:**“用户名/密码”身份提供者。
  • **新增:**用于“用户名/密码”身份提供者的“SignInWIthUsernamePasswordAsync”、“SignUpWithUsernamePasswordAsync”、“AddUsernamePasswordAsync”和“UpdatePasswordAsync”API。
  • **新增:**用于在访问令牌更改时发出通知的“IAccessTokenObserver”组件。

CLI 1.0.0

  • **新增:**排行榜现在支持根目录下的“ugs deploy”和“ugs fetch”命令。

  • **新增:**排行榜现在支持“new-file”,用于为排行榜创建空文件。

  • **新增:**游戏服务器托管模块服务命令。运行“ugs gsh -h”以显示用法。

  • **新增:**支持构建、构建配置、机群、机群区域和服务器。

  • **新增:**部署定义到 Deploy 和 Fetch 命令。

  • **新增:**与命令用法和使用的选项相关的分析。

  • **新增:**启用 -json 标志时,Deploy/Fetch 以类似表格的格式返回数组。

  • **新增:**Deploy 将文件配置发送到服务中。

  • **新增:**Fetch 根据服务配置更新本地文件。

  • **更改:**删除了对“create”和“update”命令的排行榜支持,转而支持“deploy”和“fetch”。

  • **修复:**实现 JsonConverters 以防止在通过反射调用转换器时出现 NotImplementedException。

  • **修复:**stdin 重定向时登录命令的错误。

  • 已修复:修复了阻止远程配置提取试运行更新已提取文件名的错误。

核心 SDK 1.11.0

  • 新增:新增了 IServerAccessToken 和 IServerEnvironmentId 组件,用于希望支持在服务器上下文中运行操作的软件包。

  • 新增:新增了 IAccessTokenObserver 组件,用于通知软件包 IAccessToken 值的变化。

  • 已修复:修复了部署文件时记录额外错误的错误。

2023 年 6 月

Relay

  • 变更:更新了在缺少 QOS 结果 时选择区域的方式。

远程配置

  • 新增:远程配置运行时 4.0.1 已升级到生产环境
  • 已修复:错误修复(启用了 WebGL 构建,修复了应用程序进入后台时持久化身份验证令牌的错误)
  • 变更:运行时代码现在更加符合 UGS 标准,进行了许多生活质量改进

游戏覆盖

  • 已修复:不再可以删除游戏覆盖所针对的经济键值。

推送通知测试版 3.0.1-pre.1

  • 已修复:Web UI 中的筛选器现在可以按预期工作。

身份验证

  • 新增:Unity 玩家帐户(测试版)身份提供程序。
  • 新增:Unity 玩家帐户 SDK(测试版)已针对 Unity 编辑器 2020.3 及更高版本发布。支持 Windows、Mac、Linux、iOS 和 Android 平台。
  • 新增:身份验证 SDK 中增加了对 Unity 玩家帐户身份提供程序的支持。

部署 1.1.0

  • 新增:部署现在使用“项目设置”>“服务”>“环境”中的主环境选择器,该选择器也可用于定义目标运行时环境。
  • 新增:添加了对部署定义排除路径的检查器支持。
  • 新增:在“部署”窗口中添加了对部署定义排除路径的支持。

核心 SDK 1.10.1

  • 新增:新增了 IAnalyticsUserId 组件,用于提供一种获取分析 SDK 当前记录事件所针对的用户 ID 的方法。
  • 新增:在“项目设置”>“服务”>“环境”中添加了新的环境选择器。
  • 新增:添加了新的环境 API,以允许服务对当前环境使用单一访问点。

远程配置运行时 4.0.1

  • 变更:放弃了对 Unity 2020.3 的支持,现在最低支持版本为 2021.3

  • 变更:删除了 2.x 命名空间和相应的 API,以向后兼容 2.x 实现

  • 变更:删除了静态 ConfigManager 类

  • 变更:更新了有关缓存和 Unity 属性的 SDK 文档

  • 变更:com.unity.services.core 依赖项从 1.5.2 更新到 1.8.1

  • 变更:将候选实验包升级为已验证生产包

  • 变更:将传送端点从 https://config.unity3d.com/settings 更新到 https://config.services.api.unity.com/settings

  • 已修复:添加了针对无意中持久化的身份验证令牌的修复程序

UGC 桥接器 1.0.1

  • 新增:初始版本

游戏服务器托管 SDK 1.0.5

  • 已修复:修复了 2020.3 以上版本的编辑器在 ReadyServerForPlayersAsync 调用中出现反序列化错误的问题。
  • 已修复:修复了在与 Matchmaker 一起使用时反序列化有效负载分配会引发异常的问题。

应用内购 4.9.4

  • 变更:Google Play - 结算库已更新至 5.2.1(之前为 5.1.0)。未添加新功能支持,这仅仅是为了与 Android 14 兼容。
  • 变更:Apple - 使用 CrossPlatformValidation(或 AppleValidator)时,如果收据的证书链使用 SHA-256 而不是 SHA-1 编码,则现在将对其进行验证。仍将验证使用 SHA-1 编码的旧收据。请参阅 Apple 技术说明

排行榜 1.0.0

  • 新增:排行榜 SDK 的主要版本,其中包含一些新增文档以及对公共接口的名称、参数和命名空间的更改。

云构建 1.0.5

  • 新增:向程序包程序集添加了定义约束,以便不在低于 2022 的 Unity 版本上加载。

  • 变更:根据 Unity Build Automation 品牌重塑相应调整了程序包。

  • 已修复:修复了文档和控制面板链接。

玩家帐户测试版 1.0.0-pre.2

  • 变更:将核心 SDK 依赖项更新为最新版本。

CLI测试版 1.0.0-beta.5

  • 新增:为导入和部署添加了批处理功能,以帮助防止“请求过多”错误。
  • 新增:云代码模块现在支持 importexport 命令。
  • 新增:云代码脚本现在支持 importexport 命令。
  • 新增:大厅现在支持 importexport 命令。
  • 新增:排行榜现在支持 importexport 命令。
  • 新增:远程配置现在支持 importexport 命令。
  • 新增:版本中添加了 Alpine 构建。
  • 新增:部署和提取命令的新选项 --services。此选项仅对指定的服务执行命令。
    • [重大变更]:使用 --reconcile 标志时,此选项是必需的。

[重大变更]:模块和脚本的云代码 list 命令更加详细。[重大变更]:消息被定向到 StdErr,输出到 Stdout。[重大变更]:云代码 create、delete、get、list、new-file、publish 和 update 命令现在位于父命令 scripts 下,可以使用 cloud-code scripts <command> 调用。[重大变更]:部署和提取输出已修改为相互匹配。

  • 状态已更新,以反映编辑器中发生的情况。

  • 变更:对所有导入/导出实现使用标准化输出。

  • 变更:纯文本部署/提取输出现在打印完整路径。

    • 这是为了消除对具有相同名称但路径不同的文件的输出歧义。
    • 这允许管道传输各个部分,例如 ugs cmd 1>output 2>logs.txt
    • JSON 和常规格式均如此。
  • 已修复:无法读取的云代码文件现在会在输出中正确报告。

  • 已修复:云代码删除的文件在部署输出中正确报告。

  • 已修复:远程配置条目在部署输出中正确报告。

  • 已修复:远程配置提取正确地冒泡加载文件中的问题。

  • 已修复:修复了从没有参数的云代码提取文件会导致不断追加 module.exports.parameters = {} 的问题。

  • 已修复:多次使用云代码提取和部署不再追加新行。

  • 已修复:改进了错误处理,以提供有关某些未处理异常的更多详细信息。

  • 已修复:参数无效的云代码脚本将无法提取并显示在“失败”结果部分。

2023 年 5 月

云内容分发

  • 新增:新的 Insights 功能允许用户访问详细的 CCD 使用情况指标。

核心 1.9.0

  • 新增:新的常见错误代码 ProjectPolicyAccessDeniedPlayerPolicyAccessDenied
  • 变更:Newtonsoft(反)序列化调用改为线程安全。
  • 变更:将 Newtonsoft 依赖项升级到 3.2.1,以使用最新的稳定版本。

远程配置 3.3.2

  • 变更:更新了实现文档和 ExampleSample.cs
  • 变更:更新了文档中的一般支持链接
  • 变更:改进了在 UI 中不同版本之间切换时的加载时间。
  • 已修复:在 Unity 2022+ 中,可部署资产 (.rc) 未在“部署”窗口中加载时显示。
  • 已修复:修复了在不同 .rc 文件中检测到重复键时部署错误消息显示两次的问题
  • 已修复:修复了编译警告

云代码 2.3.2/2.4.0

  • 新增:用于来自云代码 C# 模块的特定于玩家和项目范围的推送消息的订阅方法。
  • 变更:将超时时间从 10 秒增加到 25 秒。
  • 变更:不再缓存脚本,这在以前会阻止在没有本地更改的情况下进行部署。
  • 已修复:使用 JS 捆绑时,修改导入的文件将启用对主脚本的重新部署。
  • 已修复:使用脚本内参数选择多个 .js 文件时,现在将禁用检查器以进行编辑。
  • 已修复:选择多个 .js 文件或部署定义时,检查器现在将正确引用其实际类型。
  • 已修复:在 Unity 2022+ 中,可部署资产 (.js) 未在“部署”窗口中加载时显示。

部署 1.0.1

  • 已修复:在 Unity 2022 中加载时,资源未出现。

身份验证 2.5.0

  • 已修复
    • 使用玩家名称时正确处理 Web 请求
    • 修复了 SignInFailed 事件在某些情况下出现的异常报告
    • 删除客户端的时间验证,以防止因设备上的日期/时间设置错误而导致的令牌过期错误。
    • 向 API 模型添加 Preserve 属性,以防止在使用玩家名称时出现代码剥离问题

游戏覆盖

  • 已修复:现在可以正确显示使用不再存在的受众群体的营销活动。
  • 已修复:“复制受众群体”按钮现在可以按预期工作。

推送通知测试版 3.0.1-pre.1

  • 新增功能:改进了通知测试工具的性能和可用性。
  • 新增功能:更新了集成指南,其中包含 Firebase 应用创建步骤。

2023 年 4 月

CLI测试版 1.0.0-beta.4

  • 新增功能:ugs fetch 现在支持云代码脚本。
  • 已修复:包含无效参数的云代码脚本将无法部署,并且会在部署结果中显示为失败类别。
  • 已修复:部署为空或超过 10 MB 大小限制的云代码 C# 模块不再会以静默方式失败。
  • 已更改:使用 Node.js 替换 Jint 进行云代码 JavaScript 参数解析。用户需要安装版本 > 14.0.0 的 Node.js 才能解析云代码 JavaScript。

核心 1.8.2

  • 已修复:修复了 Newtonsoft 的使用,使其不再受 JsonConvert.DefaultSettings 更改的影响

Unity DevOps

  • 新增功能:Unity 版本控制
    • Unity 版本控制存储库的加密支持
    • 用于显示视频、音频和 3D 文件(glb、gltf、obj)的嵌入式多媒体查看器
    • 支持在代码审查中添加组作为审查者
  • 新增功能:构建自动化
    • 构建历史记录的搜索功能
    • 构建历史记录的批量删除功能
    • 通用 Windows 平台(测试版)支持
  • 改进:Unity 版本控制
    • 在嵌入式 3D 查看器中完全支持 .fbx 文件,包括嵌入式或外部纹理
  • 改进:构建自动化
    • 现在,表单会清楚地向用户指示他们是否对数据进行了更改,这样他们就不会忘记在离开页面之前保存
    • 更新了“播放”按钮的行为,以支持本地 WebGL 构建和自定义模板 WebGL 构建
    • 修改源代码管理设置时,新用户或没有 UVCS 组织的用户现在会看到一个横幅,其中包含有关使用 Unity 版本控制的有用信息
    • 用户现在可以选择在修改或创建目标后“保存并构建”

远程配置 3.3.2-pre.2

  • 已修复:现在,当在不同的 .rc 文件中检测到重复的键时,只会显示一条错误消息
  • 已修复:改进了 JSON 反序列化,以便在部署窗口中获得更好的体验

游戏覆盖

  • 新增功能:添加了对可选目标指标的支持。
  • 新增功能:改进了报表汇总表的加载体验。
  • 新增功能:参与者数据现在可在报表汇总表中找到。
  • 新增功能:在报表页面中添加了总参与者和覆盖时长卡片。
  • 新增功能:在报表页面中添加了覆盖开始注释。
  • 已修复:没有数据的玩家现在会进入“新玩家”受众群体,而以前他们不会进入。
  • 已修复:在创建过程中切换项目时崩溃的问题。

分析 4.4.2

  • 已修复:撤销同意(选择退出)现在还会上传数据删除请求
  • 改进:记录事件的速度现在明显加快,并且生成的内存分配更少

分析控制面板

  • 新增功能:数据资源管理器和 SQL 数据资源管理器中的新图表类型(饼图、堆叠条形图)
  • 新增功能:在 SQL 数据资源管理器中创建数据透视表的选项

应用内购买 4.8.0

  • 新增功能:在编辑器中添加了新的 IAP 按钮。此新按钮允许进行更多 UI 自定义。默认情况下,新按钮将不再更新按钮字段。
  • 已修复:GooglePlay - 修复了由 Unity IAP 4.6.0 引入的 BillingClientStateListener.onBillingServiceDisconnected() 表示形式中的“无此代理方法”异常
  • 已更改:从 IAP SDK 依赖项中删除了 com.unity.services.analytics。
  • 已更改:Google Play - Billing 库从版本 4.0.0 更新到 5.1.0 Google 版本说明。尚不支持新的 Google Billing 功能,它们将包含在未来的主要更新中。
  • 已更改:将 com.unity.services.core 从 1.5.2 升级到 1.8.1。

推送通知测试版 3.0.1-pre.1

  • 新增功能:分步设置指南。
  • 新增功能:更新的设置页面,具有更清晰的 UI 和测试集成选项。
  • 已修复:在创建过程中切换项目时崩溃的问题。

2023 年 3 月

访问控制

  • 新增功能:一项用于控制经过身份验证的玩家对特定 UGS 产品的 API 访问的新功能,请阅读此处了解更多详细信息。

Unity DevOps

  • 推出用于游戏开发的 Unity DevOps,请阅读我们的发布博客

排行榜测试版

好友测试版

身份验证 2.5.0-pre3

  • 新增功能:玩家名称
    • UpdatePlayerNameAsyncGetPlayerNameAsyncPlayerName
  • 新增功能:玩家管理
    • 控制面板:启用/禁用玩家
    • 公共管理 API:启用/禁用玩家、列出玩家
    • UGS CLI:player 模块、createdeleteenabledisable 命令
  • 已更改:玩家管理
    • 玩家概览:包括创建日期、上次登录时间和关联身份

分析控制面板

  • 新增功能:用于添加自定义事件定义的新工作流程。用户现在可以提交事件,我们的平台会自动捕获事件负载,以便于创建事件定义。
  • 新增功能:数据资源管理器中的汇总行。用户现在可以显示每列的总和和平均值。
  • 已更改:更新了数据资源管理器和 SQL 数据资源管理器中的表视图。提高了可读性,并提供了排序、列可见性和排序选项。

分析 4.4.1

  • 新增功能:CustomData 方法现在支持 IDictionary<string,object>IList<object>Enum 参数
  • 已更改:事件现在会在记录时立即序列化,而不是作为上传过程的一部分。这应该可以缓解在上传过程中(每 60 秒)可能遇到的任何问题
  • 已更改:com.unity.services.core 依赖项更新为 1.8.1
  • 已修复:自定义用户 ID 现在可以在运行时更改(通过更新 UnityServices.ExternalUserId
  • 已修复:更改 ExternalUserId 现在会立即生效,而不是在不可预测的延迟之后
  • 已修复:记录单个太大而无法上传的事件(超过 4MB)不再阻止任何进一步的事件上传(事件会立即被丢弃并发出警告)
  • 已修复:当应用程序暂停超过 5 分钟时(当“在后台运行”为 false 时),会话 ID 现在会刷新
  • 已弃用:不再支持 RecordEvent(Event event) API,并将在以后的版本中删除

云代码

  • 新增功能:一组用于在云代码中创建C# 模块的新 API。支持代码重用、NuGet 依赖项、每个模块多个端点、本地单元测试等。
  • 新增功能:云代码 C# CLI 模块
  • 新增功能:云代码 SDK v2.3.1
    • 新增功能:支持云代码 C# 模块。
    • 新增功能:支持JS 打包
    • 已修复:修复了云代码脚本中 null 路径的问题。

远程配置

  • 已更改:字符串类型值的限制从 20,000 个字符增加到 65,535 个字符。
  • 已更改:删除了 JSON 类型值的 20,000 个字符限制。每个环境的总配置大小保持 5MB。
  • 已修复:改进了远程配置文档ExampleSample.cs 中获取和应用配置的示例。

游戏覆盖

  • **新增:**报表页面上的相对图表类型。
  • **新增:**用于多变量游戏覆盖的结束测试功能。
  • **新增:**报表页面上的汇总表。
  • **修复:**API 规范中缺少 CampaignRequest 条件字段的类型。
  • **修复:**模拟体验在某些情况下不起作用。

推送通知测试版 3.0.1-pre.1

  • **修复:**解决了潜在的 Firebase 依赖项冲突。
  • **修复:**添加了对 Android 13 权限的支持。
  • **修复:**在编辑器播放模式下抛出不必要的错误。
  • **修复:**推送通知概览页面上显示的内容类型不正确。

部署包 1.0.0

  • **新增:**正式 GA 版本。
  • **新增:**将内部 API 公开。
  • **修复:**在“部署”窗口中显示新环境的问题。

大厅

  • **发布:**更新了大厅 SDK 1.1.0-pre.4 (更新日志)
    • **新增:**更具体的大厅事件
    • **新增:**受密码保护的大厅

用例示例 1.9.1

  • **新增:**无服务器多人游戏示例演示了如何利用游戏大厅并在一个简单的实时竞技场风格游戏中进行比赛,玩家在游戏中收集硬币以获得积分。

  • **更改:**将项目从 Unity 编辑器版本 2020.3.20f1 升级到 2020.3.41f1。

    • 将 Unity 服务包更新为截至 2023 年 3 月 13 日发布的最新版本。
  • **更改:**将各种非 UGS 包更新为其经过 Unity 编辑器 2020.3.41f1 验证的最新版本。

  • **更改:**从 ClientVersionCheck.cs 中删除了 RemoteConfigService.instance.SetCustomUserId() 调用,因为只有在特定情况下才需要调用该方法,而 ClientVersionCheck 不属于这些情况。

  • **更改:**对文件进行了少量重构,以支持新应用的代码风格规则。

  • **更改:**在无服务器多人游戏中,当客户端由于主机离开或将玩家踢出大厅而被迫返回主菜单时,添加弹出窗口以解释原因。

  • **更改:**在无服务器多人游戏中关闭了 Interpolate,以提高游戏场景中的响应速度并减少游戏中的“主机优势”。该标志位于玩家化身预制件的 ClientNetworkTransform 组件中。

经济

  • **新增:**经济 SDK v3.1.2
    • **修复:**修复了在设置 UnityServices.ExternalUserId 时抛出异常的错误。
  • **新增:**经济 SDK v3.1.1
    • **新增:**引入了新的同步配置工作流程。旧方法已被弃用。有关新工作流程的更多信息,请参阅文档。
    • **移除:**移除了从配置中获取不存在的货币时的冗余日志消息。
    • **修复:**修复了阻止在获取真实货币购买请求时填充“商店标识符”字段的错误。
    • **修复:**修复了 writeLocks 未正确设置的错误。
    • **修复:**修复了在使用自定义数据获取虚拟购买时抛出异常的错误。

2023 年 2 月

身份验证

  • 新增功能:玩家管理
    • 控制面板:帐户删除
    • 公共管理 API:启用/禁用玩家

云代码 2.2.4

  • **修复:**修复了用于服务的损坏的 npm 库。
  • **修复:**现在可以处理某些故障情况下缺少日志的问题。
  • **修复:**为预处理器指令后面的诊断添加了更详细的日志记录。

分析控制面板

  • **新增:**简化分析事件管理 - 扩展创建模式以包含参数。

分析 4.3.0

  • **新增:**用于记录没有任何参数的事件的 CustomData(string eventName) 方法。
  • **更改:**现在在 UnityServices.InitializeAsync 期间生成 AnalyticsContainer 对象。
  • **修复:**修复了单个损坏事件可能阻止所有后续事件发送的问题。
  • **修复:**为没有参数的事件向 CustomData 传递 null 而不是参数字典时出现 NullReferenceException;如果货币代码为 null 或空,它现在会抛出 ArgumentNullException
  • **修复:**为 ConvertCurrencyToMinorUnits 传递货币代码时出现 NullReferenceException;如果货币代码为 null 或空,它现在会抛出 ArgumentNullException
  • **修复:**2020.1 编辑器版本上的编译器错误。
  • **修复:**IAnalyticsService.Flush 方法上的文档注释,以阐明行为和用法。

游戏覆盖

  • **新增:**游戏覆盖用户现在可以在其覆盖上设置描述,以解释覆盖的目的和预期结果。
  • **修复:**在游戏覆盖和推送通知之间切换时,不再保留分页,这在某些情况下会导致显示错误页面。

云内容分发 2.2.2

  • **新增:**向 CcdManagement 添加了 SetTimeout,以允许为 API 调用配置超时。
  • **新增:**GetEntriesAsync(EntryOptions, string, int),这应该是获取条目的首选方法。
  • **新增:**ListEnvironmentsByProjectAsyncGetEnvironmentByNameAsync 方法。
  • **新增:**用于编写单元测试的 MockHttpRequest
  • **新增:**EnvironmentsApi 的单元测试。
  • **更改:**更改了 InternalUploadAsync 以使用签名 URL 上传内容。
  • **更改:**更改了 CreateEntryAsyncCreateOrUpdateEntryByPathAsyncUpdateEntryAsyncUpdateEntryByPathAsync,以便在 IsUpToDate 指示需要上传时请求签名 URL。
  • **更改:**更改了 SetDefaultEnvironmentIfNotExists 以使用 ListEnvironmentsByProjectAsync
  • **更改:**添加了新的 TryCatchRequest,以允许跳过没有环境的路由的 SetDefaultEnvironmentIfNotExists
  • **更改:**将 accessTokenprojectId 的更新从 CcdManagement.Instance 移至可以删除以进行测试的操作。
  • **修复:**修复了 GetReleaseDiffGetReleaseDiffEntries 发送空版本号查询参数的问题。
  • **修复:**修复了 GetOrgAsyncGetOrgUsageAsync 在请求中发送格式错误的正文的问题。

核心 SDK 1.7.1

  • **修复:**ActionScheduler 不再每帧生成 GC 分配(以前是 40 字节)。
  • **修复:**添加了一个 link.xml 生成器,以确保所有必需的服务程序集在启用了代码剥离的构建中都能得到正确保留。此链接文件中仅列出了提供 IServiceComponent 的服务。
  • **修复:**失败的遥测请求在失败时不再记录错误,除非将 ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING 启用为脚本定义。
  • **修复:**现在,在退出播放模式时,会在播放模式期间注册的所有 ActionScheduler 都正确取消注册。

应用内购买 4.6.0

  • **新增:**添加了一个新的还原交易回调 RestoreTransactions(Action<bool, string> callback),以便在 RestoreTransactions 不成功时获取错误字符串(IAppleExtensionsIGooglePlayStoreExtensions)。
  • **新增:**添加了一个新的初始化失败回调 IStoreListener.OnInitializeFailed(InitializationFailureReason, string),以便在调用 OnInitializeFailed 时获取错误字符串。
  • **新增:**添加了一个新的设置失败回调 IStoreCallback.OnSetupFailed(InitializationFailureReason, string),以便在调用 OnSetupFailed 时获取错误字符串。
  • **新增:**添加了一个新的 FetchAdditionalProductsfailCallback 包含一个错误字符串。IStoreController.FetchAdditionalProducts(HashSet<ProductDefinition>, Action, Action<InitializationFailureReason, string>)
  • **新增:**Apple - Product.appleOriginalTransactionId:返回原始交易 ID。仅当在活动会话中进行购买时,此字段才可用。
  • **新增:**Apple - Product.appleProductIsRestored:指示产品是否已还原。
  • **新增:**GooglePlay - 已添加 IGooglePlayConfiguration.SetFetchPurchasesExcludeDeferred(bool exclude) 以恢复到以前的行为。不建议这样做,并且仅当在 IStoreListener.ProcessPurchase 中处理 Deferred 购买时才应使用此方法。
  • **新增:**GooglePlay - 已添加 IGooglePlayStoreExtensions.GetPurchaseState(Product product) 以获取产品的 GooglePurchaseState
  • **新增:**GooglePlay - 向 GoogleBillingResponseCode 添加了缺少的值,以便在可用时在 PurchaseFailureDescription 的消息中输出它。
  • **新增:**无代码 - 向 IAP 按钮 添加了用于添加 On Transactions Restored 脚本的选项:void OnTransactionsRestored(bool success, string? error)
  • **更改:**旧的 OnInitializeFailed OnInitializeFailed(InitializationFailureReason error) 已标记为 Obsolete
  • **更改:**旧的 OnSetupFailed OnSetupFailed(InitializationFailureReason reason) 已标记为 Obsolete
  • **更改:**旧的 FetchAdditionalProducts FetchAdditionalProducts(HashSet<ProductDefinition> additionalProducts, Action successCallback, Action<InitializationFailureReason> failCallback) 已标记为 Obsolete
  • **更改:**旧的还原交易回调 RestoreTransactions(Action<bool> callback) 已标记为 ObsoleteIAppleExtensionsIGooglePlayStoreExtensions)。
  • **更改:**从 Apple 收到的无效交易(产品没有授权)不再输出“正在完成交易”日志。这仅影响从未到达 ProcessPurchase 的交易。
  • **更改:**GooglePlay - 枚举 GooglePurchaseState 现在将 4 识别为 Deferred
  • **修复:**分析 - 现在可以正确处理分析 4.3.0 中引入的 ServicesInitializationException
  • **修复:**分析 - 修复了当产品没有本地化数据时交易事件失效的问题。
  • **修复:**GooglePlay - 修复了在 BillingClient 未准备好时查询 SKU 详细信息时出现的 NullReferenceException
  • **修复:**GooglePlay - 修复了从 Google Play 商店断开连接时前置应用程序时的 应用程序无响应 (ANR)
  • **修复:**GooglePlay - 将在断开连接状态下检索产品时出现 PurchasingUnavailable 错误的次数限制为每次连接一次。
  • **修复:**GooglePlay - 默认情况下,在获取购买时,Deferred 购买不再发送到 IStoreListener.ProcessPurchase。这避免了授予未付款产品的可能性。只有当这些购买变为 Purchased 时才会处理它们。可以使用 IGooglePlayConfiguration.SetFetchPurchasesExcludeDeferred(bool exclude) 恢复此行为以不排除它们,但必须在 IStoreListener.ProcessPurchase 中处理 Deferred 购买。

远程配置

  • 变更:升级了后端基础设施,以改善全球连接。远程配置现在从北美、欧洲和亚洲提供服务。

大厅 1.1.0-pre.3

  • 新增:LobbyEvents 现在提供用于比较的版本。

  • 新增:CreateOrJoinLobby 函数,允许通过一次调用创建或加入大厅。

  • 新增:Player 类中新增 PlayerProfile 字段。

  • 新增:引入了 LobbyEvents 功能,以便为大厅提供实时更改更新。

  • 修复:删除了阻止大厅事件 API 完全公开的防护措施。

2023 年 1 月

身份验证 2.4.0

  • 新增:支持 Apple Game Center
    • SignInWithAppleGameCenterAsyncLinkWithAppleGameCenterAsyncUnlinkAppleGameCenterAsync
    • 支持 Apple Game Center 身份验证 API
  • 新增:玩家帐户删除 API。

云代码 2.2.1

  • 修复:部署窗口中的重复文件现在显示为警告,而不是错误。
  • 修复:在某些情况下触发了速率限制。

远程配置 3.3.1

  • 新增:更新了代码配置的部署 API 实现。
  • 修复:部署失败不包含消息详细信息的问题。

部署测试版 1.0.0-pre.7

  • 新增:部署窗口的新 UI 添加:增强的状态可观察性。
  • 新增:部署窗口的新 UI 添加:使用复选框选择资源。
  • 修复:在编辑器会话之间保存部署状态。
  • 修复:部署速率限制问题。

应用内购 4.5.2

  • 修复:删除了导致编译器警告 CS0168 的未使用异常变量。
  • 修复:遥测 - 对于某些用户,对遥测报告的调用偶尔会触发 NullReferenceExceptionIndexOutOfRangeExceptionKeyNotFoundException。现在可以安全地捕获并记录这些异常。通过将所有遥测调用移至主线程,也可以缓解这些故障。该问题在 IAP 4.4.1 中出现,但可能更早。
  • 修复:Apple - 优化了处理交易时的内存使用,以防止在启动时处理交易时出现内存不足崩溃。
  • 修复:批处理模式 - 现在,调用 UnityPurchasingEditor.TargetAndroidStore 以选择 UDP 可以成功检查 UDP 软件包安装,并在作为批处理模式命令的一部分执行时记录错误,而不是抛出阻塞弹出窗口。
  • 修复:分析 - 删除了收据 JSON 的转义字符,这些字符会导致后端出现解析问题。
  • 修复:GooglePlay - 修复了在断开连接时重试完成交易导致崩溃的错误。

云存储

  • 变更:删除了 16KB 的存储槽大小限制,用户现在在所有存储槽中总共有 5MB 的空间可以使用。
  • 变更:将最大存储槽数量从 200 个增加到 2000 个。

推送通知测试版 3.0.0-pre.1

  • 新增:软件包设置面板中现在提供产品信息中心链接。
  • 变更:重命名了软件包设置 (Android),使其与 Firebase 设置名称相匹配。
  • 变更:从公共 API 中删除了一些不打算直接使用的类。
  • 变更:删除了已弃用的 PushNotifications 类和已过时的 PushNotificationSettings 属性。
  • 修复:现在,从通知启动完全关闭的应用程序时,也会发送 notificationOpened 事件。
  • 发布到公开测试版。

分析

  • 新增:在 UGS 分析中支持旧版分析自定义事件,以避免需要更改游戏代码。

游戏服务器托管 (Multiplay)

  • 修复:修复了订阅服务器事件时导致竞争条件的错误,该错误会导致事件丢失。

2022 年 12 月

Relay 1.0.5

  • 新增:将此版本的 Relay 与 UTP 2.0.0-pre.3 和 NGO 1.2.0 一起使用,可以在 webGL 上使用 Relay。
  • 新增:更新 SimpleRelay 示例。
  • 变更:InteractiveRelayUtp 示例替换为 SimpleRelayUtp
  • 变更:将 QoS 依赖项更新至 1.1.0。
  • 变更:将 UTP 依赖项更新至 1.3.0。

核心 SDK 1.7.0

  • 变更:编辑器 AccessTokens 现在为每个会话缓存网关 JWT,并在需要时刷新它。现在可以直接使用它,而无需缓存结果。
  • 修复:改进了调度程序组件的线程安全。IActionScheduler 现在可以从任何线程安全调用。
  • 修复:改进了遥测组件的线程安全。IMetricsIDisagnostics 现在可以从任何线程安全调用。

Vivox

  • 修复:修复了 Android VivoxNative.aar 库在尝试解析内部依赖项时出现问题的问题。

2022 年 11 月

身份验证 2.3.1

  • 新增:Meta Quest (Oculus) 支持
    • SignInWithOculusAsync、LinkWithOculusAsync、UnlinkOculusAsync
    • 支持 Meta Quest 身份验证 API
  • 新增:PlayerInfo 中新增 GetGooglePlayGamesId()

云代码 2.1.1

  • 新增:Deployment 软件包集成,用于代码配置,允许直接从编辑器编辑和配置云代码脚本。
  • 修复:现在允许将 void 类型作为云代码脚本的返回类型。
  • 修复:删除了调用端点时对函数参数的要求。现在,可以提供 null 或省略它们。

核心 SDK 1.6.0

  • 新增:UnityServices.ExternalUserId,可用于将来自第三方提供商的用户标识符传递给 Unity Gaming Services。
  • 新增:现在,所有 IInitializablePackage 初始化时间均由 Services Core 测量。
  • 变更:当依赖项树为空时,CoreRegistryInitializer 现在会抛出 ServicesInitializationException,而不是显式抛出 NullReferenceException
  • 变更:ActionScheduler 已更新为线程安全。
  • 变更:在 Unity 2021.3 及更高版本上构建期间,服务配置文件不会临时添加到 StreamingAssets 文件夹中。
  • 变更:现在,未链接项目 ID 的服务初始化将失败(抛出 UnityProjectNotLinkedException)。
  • 修复:除非将 ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING 启用为脚本定义,否则持久化遥测不再记录错误。当持久化遥测产生错误时,将发送诊断信息。
  • 修复:当核心无法找到剥离的服务包时,它不再无法初始化。
  • 修复:如果 Unity 包多次实现 IInitializablePackage,则 Services Core 无法找到所有 IInitializablePackage
  • 修复:空配置值导致序列化问题的情况。
  • 修复:不使用身份验证 API 时的剥离问题。

部署 1.0.0-pre.4

  • 新增:部署窗口现在允许管理云代码和远程配置的部署。
  • 新增:软件包的第一个预发布版本。

经济 3.0.0

  • 新增:CustomDataDeserializable 已添加到配置项中,其类型为 IDeserializable
  • 新增:缺少公共接口的 XmlDoc:IEconomyConfigurationApiClientIEconomyPlayerBalancesApiClientIEconomyPlayerInventoryApiClientIEconomyPurchasesApiClientApi
  • 移除:远程配置运行时依赖项。

远程配置 3.2.2

  • 新增:为 RC 编辑器实现了基于文件的创作。
  • 新增:添加了有关缓存机制的文档。
  • 新增:发布了版本控制,现在可以通过信息中心和管理员 API 查看和恢复游戏配置的旧版本。

应用内购 4.5.1

  • 修复:GooglePlay - 修复了在应用程序处于前台时处理延迟购买的问题。该问题是在 Unity IAP 4.5.0 中引入的。
  • 修复:GooglePlay - 修复了在启动应用程序时 DequeueQueryProducts 中出现的 NullReferenceException。该问题是在 Unity IAP 4.2.0 中引入的。
  • 修复:分析 - 修复了在报告不可购买产品的交易失败时出现的 NullReferenceException。该问题是在 Unity IAP 4.2.0 中引入的。
  • 修复:分析 - 旧版分析不再报告自定义 UGS 环境中的事件,这会导致实时销售数据报告错误。该问题是在 Unity IAP 4.2.0 中引入的。

匹配系统

  • 修复:由于使用了 Task.Delay,软件包内示例在 WebGL 构建中中断,这已通过轮询的协程实现进行了更改。
  • 新增:MatchmakingResults 模型具有新属性“PoolId”。

2022 年 10 月

身份验证 2.2.0

  • 新增:自带身份 v1 - OpenID Connect 支持
    • SignInWithOpenIdConnectAsync、LinkWithOpenIdConnectAsync、UnlinkOpenIdConnectAsync
    • OpenID Connect 身份验证 API 支持
  • 新增: WebGL 支持。

核心 SDK 1.4.3

  • **变更:**遥测日志现在使用 ENABLE_UNITY_SERVICES_CORE_TELEMETRY_LOGGING 定义而不是 ENABLE_UNITY_SERVICES_CORE_VERBOSE_LOGGING
  • **修复:**添加了诊断消息长度限制和遥测计数限制,因此遥测有效负载不会被遥测服务拒绝。

应用内购 4.5.0

  • **新增:**Apple - 添加对家人共享的支持。
    • 当产品的授权被撤销时,将调用 API IAppleConfiguration.SetEntitlementsRevokedListener(Action<List<Product>>Action 将随被撤销的产品列表一起调用。有关示例用法,请参阅文档“商店指南”>“iOS 和 Mac App Store”。
    • API - 产品元数据现在可通过 IStoreController.productsProductMetadata.GetAppleProductMetadata() 获取,位于 AppleProductMetadata 中。
    • API AppleProductMetadata.isFamilyShareable 指示该产品是否可供家人共享。
    • Apple App Store - 11 家庭共享 示例展示了如何使用 Unity IAP 管理家人共享的购买。
  • **修复:**GooglePlay - 处理促销代码等应用外购买不再需要重新启动应用。购买将在下次应用在前台运行时处理。技术限制:对于促销代码,如果在兑换代码时打开了应用,则您可能会收到对 IStoreListener.OnPurchaseFailed 的额外调用,并显示 PurchaseFailureReason.Unknown。这可以安全地忽略。
  • **修复:**GooglePlay - 修复了由于 Unity IAP 4.2.0 中引入的并发问题导致在检索产品时很少发生的 NullReferenceException

2022 年 9 月

分析 4.2.0

  • **新增:**SessionID 属性,返回当前用于填充所有事件的 sessionID 参数的 GUID 值。
  • **变更:**降低 gameRunning 事件的频率以减少过多的流量(这不会影响您的数据质量)。
  • **修复:**由于隐私同意流程问题,SDK 初始化在 WebGL 上静默失败。
  • **修复:**WebGL 上用于上传的 SDK 事件批处理静默失败。

应用内购 4.4.1

  • **新增:**GooglePlay - Google Play 结算库版本 4.0.0。
    • IAP 软件包尚不支持多数量功能,该功能将在未来的更新中提供。请勿在 Google Play 控制台中启用“多数量”。
    • 添加对IMMEDIATE_AND_CHARGE_FULL_PRICE 分摊模式的支持。使用 GooglePlayProrationMode.ImmediateAndChargeFullPrice 可以轻松访问。
    • 收据 json 中的“skuDetails”现在是旧结构的数组,而不仅仅是一个对象。在大多数情况下,它只有一个元素,因此如果在您的应用中解析它,请将其视为数组,并默认获取第一个元素。
  • **修复:**GooglePlay - 修复了由于 Unity IAP 4.2.0 中引入的并发问题导致很少发生的 NullReferenceException 和 ArgumentException。
  • **修复:**Amazon - 将 android:export 设置为 true 以支持 Android API 级别 31+。
  • **修复:**GooglePlay - 修复 IGooglePlayConfiguration.SetDeferredPurchaseListenerIGooglePlayConfiguration.SetDeferredProrationUpgradeDowngradeSubscriptionListener 回调有时未从主线程调用的问题。
  • **修复:**GooglePlay - 配置 IGooglePlayConfiguration.SetQueryProductDetailsFailedListener(Action<int> retryCount) 时,将使用从 1 而不是 0 开始的 retryCount 调用该操作。
  • **修复:**GooglePlay - 在升级/降级订阅时添加了验证,当旧交易 ID 为空时,该验证会使用 PurchaseFailureReason.ProductUnavailable 调用 IStoreListener.OnPurchaseFailed。当尝试升级/降级用户不拥有的订阅时,可能会发生这种情况。

Vivox

  • **修复:**修复了与音频缓冲区相关的生成 API 导致 Unity 编辑器崩溃的问题。
  • **新增:**将一些生成的 API 添加回 SDK,这些 API 之前被省略了。
  • **修复:**修复了构建配置值存储为 null 而不是空字符串的问题,如果项目未在项目设置中链接,则会导致编辑器出现异常。

2022 年 8 月

分析 4.1.0

  • **新增:**添加了一种方法来访问分析在运行时使用的用户 ID。
  • **修复:**现在使用包含毫秒的时间戳记录事件。
  • **修复:**更多模型对象现在可以使用 XML 文档。
  • **修复:**当缺少项目 ID 时,会显示更清晰的错误消息。

大厅 1.0.3

  • **修复:**修复了 LobbyConflict (HTTP 409) 解析时 ArgumentNullException 抛出的错误。
  • **修复:**修复了报告 CommonErrorCode 而不是 LobbyExceptionReason 的问题,这会使某些 switch case 无效。

应用内购 4.3.0

  • **新增:**GooglePlay - 当 Unity IAP 无法查询产品详细信息时,将调用 API IGooglePlayConfiguration.SetQueryProductDetailsFailedListener(Action<int>)。每次查询产品详细信息失败时,都会使用重试计数调用 Action。有关示例用法,请参阅文档“商店指南”>“Google Play”。

匹配

  • **修复:**在某些 IL2CPP 平台编译中,Multiplay 令牌类的序列化会被剥离。

Vivox

  • **变更:**调整 Windows 和 Mac VivoxNative 库 .meta 文件以启用“启动时加载”,以便无论编辑器的构建目标如何都加载它们。值得注意的是,如果编辑器构建目标是 iOS,则在进入播放模式时会导致编译器错误,因为我们的 Mac 库(与 Windows 库一起用于编辑器)尚未加载。
  • **修复:**修复了各种插件 .meta 文件未针对其特定平台的问题,如果安装了其他 Vivox 平台软件包,则会导致编辑器在进入播放模式时崩溃。
  • **修复:**修复了如果 ChatChannelSample 无法使用身份验证包会导致编译器错误的问题。安装 ChatChannelSample 时应自动引入身份验证包,但如果尚未引入,则会出现编译器错误。

2022 年 7 月

身份验证 2.1.1

  • **新增:**Google Play 游戏服务支持
    • SignInWithGooglePlayGames、LinkWithGooglePlayGames、UnlinkGooglePlayGames
    • Google Play 游戏身份验证 API 支持

云代码 2.0.1

  • **修复:**公共 ICloudCodeService 接口缺少 XmlDoc。

云存档 2.0.1

  • **新增:**为公共 ICloudSaveDataClient 接口和 CloudSaveService 静态类添加了缺少的 XmlDoc。

核心 SDK 1.4.2

  • **新增:**在使用 ENABLE_UNITY_SERVICES_CORE_VERBOSE_LOGGING 作为脚本定义时,记录包含所有服务共享的常见配置的 JSON 以进行调试。
  • **新增:**在构建包含核心包且未在项目设置中链接项目的项目时记录警告。
  • **变更:**当核心使用没有云项目 ID 的方式初始化时,记录错误而不是警告。
  • **修复:**通过引入空检查修复了在为遥测提供空文件时出现的 NullReferenceException
  • **修复:**修复了在 Switch 上不一致地发生的 DirectoryNotFoundException,方法是解决竞争条件问题。

远程配置 3.1.3

  • **新增:**对在 2.x 命名空间内使用分析的平台使用 ENABLE_CLOUD_SERVICES_ANALYTICS 标志。
  • **新增:**将平台列入白名单,以便从 2.x 命名空间内的分析包中获取 userId。
  • **新增:**允许 projectId 和 userId 参数位于控制台的有效负载中。

应用内购 4.2.1

  • **新增:**通过目录 UI 自动初始化 Unity 游戏服务的功能。有关更多详细信息,请参阅文档
  • **变更:**应用内购包现在要求在使用之前初始化 Unity 游戏服务。目前,IAP 将继续照常工作,但如果尚未初始化 Unity 游戏服务,则会记录警告。在此软件包的未来版本中,初始化 Unity 游戏服务将是强制性的。有关更多详细信息,请参阅文档
  • **修复:**由于在 1.4.1 中发现了一个新错误,将 com.unity.services.core 从 1.4.1 降级到 1.3.1。

匹配

  • **修复:**错误修复:在某些 Linux 平台编译中,Multiplay 令牌类的序列化会被剥离。
  • **新增:**为 Photon 集成向 CreateBackfillTicketOptions 添加了 PoolId 和 MatchId。

Vivox

  • **新增:**将 VivoxConfig 作为参数添加到 VivoxService.Instance.Initialize(...) 方法中,以便开发人员可以在启动时配置 Vivox 客户端的设置。
  • **变更:**在将环境 ID 附加到 AccountId 和 ChannelId URI 时,停止删除减号 ('-') 字符。环境 ID 现在将按原样附加。
  • **修复:**修复了导致来自 Android 平台的生成文件进入包的问题,从而导致由于 API 不存在于任何其他库中而无法解析方法。