入门包

入门包是为新玩家提供的一次性优惠,可以以折扣价获得额外资源。入门包可以改善入职流程并在早期提高参与度,还可以帮助将新玩家转化为付费用户。本示例演示如何在游戏中创建一个一次性入门包交易,玩家可以使用游戏内货币购买该交易。

先决条件

要使用此示例用例,您必须下载并安装您的 Unity 项目中的 UGS 用例项目。

概述

要查看此用例的实际运行情况,打开示例菜单并导航到入门包。要直接打开此场景并与用例进行交互

  1. 在 Unity 编辑器**项目**窗口中,选择Assets > Use Case Samples > Starter Packs,然后双击StarterPackSample.unity打开示例场景。
  2. 播放进入播放模式。

初始化

StarterPackSceneManager.cs脚本在其Start函数中执行以下初始化任务

  1. 初始化 Unity 游戏服务。
  2. 使用身份验证服务以匿名方式登录玩家。如果您之前已初始化任何其他示例场景,身份验证将使用您的缓存玩家 ID 而不是创建新的玩家 ID。
  3. 从经济服务检索并更新玩家的货币余额。

功能

赠送 10 个宝石

在本示例中,入门包的价格为 10 个宝石。为了演示目的,此场景提供一个按钮,每次点击该按钮都会向玩家赠送 10 个宝石,从而确保有足够的货币来测试购买。当您点击赠送 10 个宝石按钮时,会发生以下情况

  1. 按钮的OnClick方法调用StarterPackSceneManager.cs脚本的OnGiveTenGemsButtonPressed函数。
  2. OnGiveTenGemsButtonPressed函数调用经济服务,将 10 个宝石添加到玩家的余额中,然后 UI 代码更新货币 HUD 中的玩家资源。

请注意,在货币余额更新时,购买按钮会暂时禁用。

购买入门包

当您点击购买入门包按钮且拥有 10 个或更多宝石时,玩家会消耗 10 个宝石以换取包中提供的资源。会发生以下情况

  1. 按钮的OnClick方法调用StarterPackSceneManager.cs脚本的OnBuyButtonPressed函数,该函数向云代码服务发送请求以执行PurchaseStarterPack.js脚本。
  2. PurchaseStarterPack.js脚本查询云保存服务以验证玩家是否尚未认领交易,然后直接与经济服务启动购买。
  3. 如果玩家尚未认领交易,脚本会调用经济服务从玩家的余额中减去 10 个宝石,然后直接向云保存服务发送更新以设置一个标志,表明该玩家现在已认领交易。
  4. UI 代码更新货币 HUD 中的玩家资源。

购买按钮也会更新以指示优惠已认领。此时,您无法再购买额外的入门包,除非您点击重置入门包按钮,无论您拥有多少宝石。

重置入门包

购买入门包后,玩家无法再购买另一个入门包,除非他们重置游戏存档。为了说明这一点,此场景提供一个按钮来重置标志,以便玩家可以再次购买。当您点击重置入门包按钮时,会发生以下情况

  1. 按钮的OnClick方法调用StarterPackSceneManager.cs脚本的OnResetPlayerDataButtonPressed函数,该函数向云代码服务发送请求以执行PurchaseStarterPack.js脚本。
  2. 脚本直接向云保存服务发送更新以设置一个标志,表明该玩家尚未认领交易。
  3. UI 代码重新启用入门包购买按钮。

设置

要求

要复制此用例,您需要在项目中使用以下Unity 包

角色
身份验证以匿名方式登录用户以跟踪其服务器端数据。
云代码包含服务器端的重要验证逻辑。
云保存存储少量数据,例如标志,指示用户是否已认领入门包。
部署提供一个一致的接口来部署云服务的资产。
经济在运行时检索并更新玩家的货币余额。

要在游戏中使用这些服务,请在Unity 云控制台中为您的组织和项目激活每个服务。

Unity 云服务配置

要复制此示例场景的设置到您自己的 Unity 项目中,请配置以下项目

  • 云代码脚本
  • 经济项目

要配置这些项目,您可以使用部署包,或者使用 Unity 云控制台手动输入它们。建议的最佳实践是使用部署包,因为它可以极大地加快此过程。

使用部署包

要使用部署包部署配置

  1. 打开部署窗口
  2. 选中CommonStarter Pack
  3. 点击Deploy Selection

这将部署所有必要的项目。

使用 Unity 云控制台

您可以使用Unity 云控制台通过项目和环境手动配置服务。请参阅以下部分以配置此示例。

云代码

在 Unity 云控制台中发布以下脚本

脚本参数描述项目中的位置
PurchaseStarterPack在直接与经济服务启动购买之前,查询云保存服务以验证玩家是否尚未认领交易。Assets/Use Case Samples/Starter Pack/Cloud Code/PurchaseStarterPack.js
ResetStarterPackFlag重置入门包标志以指示当前玩家尚未认领交易。Assets/Use Case Samples/Starter Pack/Cloud Code/ResetStarterPackFlag.js

注意Cloud Code文件夹中包含的云代码脚本是本地副本,因为您无法查看示例项目的控制台。对这些脚本的更改不会影响此示例的行为,因为它们不会自动上传到云代码服务。

经济

在 Unity 云控制台中配置以下资源

资源类型资源名称ID描述
货币宝石GEM入门包的货币成本
货币金币COIN入门包的货币奖励
货币珍珠PEARL入门包的货币奖励
库存物品来自新手包的库存物品奖励。