入门包
入门包是为新玩家提供的一次性优惠,可以以折扣价获得额外资源。入门包可以改善入职流程并在早期提高参与度,还可以帮助将新玩家转化为付费用户。本示例演示如何在游戏中创建一个一次性入门包交易,玩家可以使用游戏内货币购买该交易。
先决条件
要使用此示例用例,您必须下载并安装您的 Unity 项目中的 UGS 用例项目。
概述
要查看此用例的实际运行情况,打开示例菜单并导航到入门包。要直接打开此场景并与用例进行交互
- 在 Unity 编辑器**项目**窗口中,选择Assets > Use Case Samples > Starter Packs,然后双击
StarterPackSample.unity
打开示例场景。 - 按播放进入播放模式。
初始化
StarterPackSceneManager.cs
脚本在其Start
函数中执行以下初始化任务
- 初始化 Unity 游戏服务。
- 使用身份验证服务以匿名方式登录玩家。如果您之前已初始化任何其他示例场景,身份验证将使用您的缓存玩家 ID 而不是创建新的玩家 ID。
- 从经济服务检索并更新玩家的货币余额。
功能
赠送 10 个宝石
在本示例中,入门包的价格为 10 个宝石。为了演示目的,此场景提供一个按钮,每次点击该按钮都会向玩家赠送 10 个宝石,从而确保有足够的货币来测试购买。当您点击赠送 10 个宝石按钮时,会发生以下情况
- 按钮的
OnClick
方法调用StarterPackSceneManager.cs
脚本的OnGiveTenGemsButtonPressed
函数。 OnGiveTenGemsButtonPressed
函数调用经济服务,将 10 个宝石添加到玩家的余额中,然后 UI 代码更新货币 HUD 中的玩家资源。
请注意,在货币余额更新时,购买按钮会暂时禁用。
购买入门包
当您点击购买入门包按钮且拥有 10 个或更多宝石时,玩家会消耗 10 个宝石以换取包中提供的资源。会发生以下情况
- 按钮的
OnClick
方法调用StarterPackSceneManager.cs
脚本的OnBuyButtonPressed
函数,该函数向云代码服务发送请求以执行PurchaseStarterPack.js
脚本。 - 此
PurchaseStarterPack.js
脚本查询云保存服务以验证玩家是否尚未认领交易,然后直接与经济服务启动购买。 - 如果玩家尚未认领交易,脚本会调用经济服务从玩家的余额中减去 10 个宝石,然后直接向云保存服务发送更新以设置一个标志,表明该玩家现在已认领交易。
- UI 代码更新货币 HUD 中的玩家资源。
购买按钮也会更新以指示优惠已认领。此时,您无法再购买额外的入门包,除非您点击重置入门包按钮,无论您拥有多少宝石。
重置入门包
购买入门包后,玩家无法再购买另一个入门包,除非他们重置游戏存档。为了说明这一点,此场景提供一个按钮来重置标志,以便玩家可以再次购买。当您点击重置入门包按钮时,会发生以下情况
- 按钮的
OnClick
方法调用StarterPackSceneManager.cs
脚本的OnResetPlayerDataButtonPressed
函数,该函数向云代码服务发送请求以执行PurchaseStarterPack.js
脚本。 - 脚本直接向云保存服务发送更新以设置一个标志,表明该玩家尚未认领交易。
- UI 代码重新启用入门包购买按钮。
设置
要求
要复制此用例,您需要在项目中使用以下Unity 包
包 | 角色 |
---|---|
身份验证 | 以匿名方式登录用户以跟踪其服务器端数据。 |
云代码 | 包含服务器端的重要验证逻辑。 |
云保存 | 存储少量数据,例如标志,指示用户是否已认领入门包。 |
部署 | 提供一个一致的接口来部署云服务的资产。 |
经济 | 在运行时检索并更新玩家的货币余额。 |
要在游戏中使用这些服务,请在Unity 云控制台中为您的组织和项目激活每个服务。
Unity 云服务配置
要复制此示例场景的设置到您自己的 Unity 项目中,请配置以下项目
- 云代码脚本
- 经济项目
要配置这些项目,您可以使用部署包,或者使用 Unity 云控制台手动输入它们。建议的最佳实践是使用部署包,因为它可以极大地加快此过程。
使用部署包
要使用部署包部署配置
- 打开部署窗口。
- 选中
Common
和Starter Pack
。 - 点击
Deploy Selection
。
这将部署所有必要的项目。
使用 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
文件夹中包含的云代码脚本是本地副本,因为您无法查看示例项目的控制台。对这些脚本的更改不会影响此示例的行为,因为它们不会自动上传到云代码服务。
经济
资源类型 | 资源名称 | ID | 描述 |
---|---|---|---|
货币 | 宝石 | GEM | 入门包的货币成本 |
货币 | 金币 | COIN | 入门包的货币奖励 |
货币 | 珍珠 | PEARL | 入门包的货币奖励 |
库存物品 | 剑 | 剑 | 来自新手包的库存物品奖励。 |