Unity WebGL 集成
本指南将详细介绍如何将 Unity 开发的 WebGL 游戏与阿哈利姆游戏枢纽平台集成,使玩家能够直接通过游戏枢纽界面访问您的游戏。
1. 构建与配置 Unity 客户端
添加 WebGL 模板
为了确保您的 Unity 游戏能在游戏枢纽环境中正常运行,首先需要将专为阿哈利姆优化的 WebGL 模板导入到您的 Unity 项目中。 下载提供的 模板包,然后将其拖放到您的 Unity 项目资源目录中。 如需查看完整的集成代码示例,请参阅 示例项目。
配置与执行 WebGL 构建
在 Unity 编辑器中,将您的项目构建目标设置为 WebGL 平台,并确认之前导入的阿哈利姆 WebGL 模板已被正确识别和应用。 打开 Unity 的 ProjectSettings 窗口,导航至 Player 设置部分,找到 WebGL 平台设置,并将模板选项设置为 Aghanim。 启动构建过程并等待完成,这将生成必要的输出文件,为在游戏枢纽平台上托管您的游戏做好准备。
部署构建文件
Unity 游戏的部署文件可以通过以下两种方式之一托管在游戏枢纽平台上:
-
方式一:使用阿哈利姆 CDN 托管:将您的
build.zip构建包发送给阿哈利姆技术团队,他们会将其部署到阿哈利姆的内容分发网络上,确保全球玩家的快速访问。 -
方式二:使用自有服务器托管:如果您希望使用自己的服务器或第三方托管服务,请将 WebGL 构建包解压后,提供其中
index.html文件的完整 URL 给阿哈利姆团队进行集成。
2. 实现游戏枢纽的玩家授权
基于 Token 的用户授权
当用户成功登录游戏枢纽并点击“播放”按钮时,系统会在内嵌 iframe 中加载您的游戏,同时在 URL 查询参数中附加一个一次性 Token,用于后续的身份验证过程。
获取和发送 Token
Unity 客户端需要 从 URL 参数中提取 Token,然后将该 Token 发送到您的游戏后端后端进行验证和用户身份确认。
在游戏后端上验证用户身份
游戏后端应调用阿哈利姆的 用户认证 API 端点,使用收到的 Token 验证用户身份的真实性和有效性。
请求数据格式:
{
"token": "819e1c655ab5188f8055494cfd8493b665071f57e280597203c7802e734aebf0"
}
已关联玩家账号的玩家验证成功响应格式:
{
"id": "usr_eCEGnkEHeKA",
"name": "Player6739",
"player_id": "7d7cc29d277844adb6c89b239facbfbd",
"facebook_id": "1234567890",
"telegram_id": null
}
未关联玩家账号的玩家验证成功响应格式:
{
"id": "usr_eCEGnkEHeKA",
"name": "Player6739",
"player_id": null
"facebook_id": "1234567890",
"telegram_id": null
}
当验证响应成功并且返回数据中包含有效的 player_id 时,说明该玩家已经关联了游戏内玩家账号,游戏后端应立即为该玩家授权访问权限。 如果验证响应中的 player_id 为空 (null),表示该玩家暂未关联游戏内玩家账号,此时游戏后端应为其创建一个新的玩家账号,并通过 API 将该新账号与玩家关联起来。
3. 玩家账号关联管理
检查玩家关联状态
在执行玩家关联操作前,应通过 获取用户信息 API 端点查询该玩家是否已经与其他玩家建立了关联,以避免重复关联或错误覆盖。
查询成功的响 应格式:
{
"id": "usr_eCEGnkEHeKA",
"name": "Player6739",
"player_id": "7d7cc29d277844adb6c89b239facbfbd"
"facebook_id": "1234567890",
"telegram_id": null
}
关联玩家账号
当需要将游戏内玩家账号与游戏枢纽玩家关联时,应调用 关联玩家账号 API 端点执行关联操作。
请求数据格式:
{
"player_id": "7d7cc29d277844adb6c89b239facbfbd"
}
查询成功的响应格式:
{
"id": "usr_eCEGnkEHeKA",
"name": "Player6739",
"player_id": "7d7cc29d277844adb6c89b239facbfbd"
"facebook_id": "1234567890",
"telegram_id": null
}
解除玩家账号关联
当需要解除游戏内玩家账号与游戏枢纽玩家之间的关联关系时,应调用 解除玩家账号关联 API 端点执行解除操作。
请求数据格式:
{
"player_id": "7d7cc29d277844adb6c89b239facbfbd"
}
查询成功的响应格式:
{
"id": "usr_eCEGnkEHeKA",
"name": "Player6739",
"player_id": null
"facebook_id": "1234567890",
"telegram_id": null
}
4. 阿哈利姆游戏内购买实现
基于 URL 的商品购买
玩家可以通过访问特定格式的支付页面 URL 来完成游戏内商品的购买流程:
https://{your-game-hub-domain}/go/checkout?player_id={PLAYER_ID}&item_sku={SKU}
除了必要的参数外,您还可以添加以下可选参数来自定义支付页面的显示内容:
locale:指定支付页面的语言item_name:自定义显示的商品名称item_description:自定义显示的商品描述文本item_image_url:自定义显示的商品图片 URL
基于 SDK 的商品购买
作为替代方案,您也可以集成阿哈利姆 SDK,并使用 AghanimSDK.PurchaseItem(string sku) 方法在游戏客户端中直接触发购买流程。
5. 保存游客玩家进度
如果您的游戏允许游客(未注册玩家)进行游戏,您可以通过调用 AghanimSDK.Authorize(string playerID, string playerName) 方法触发游戏枢纽的授权流程。 当游客玩家完成授权流程后,游戏枢纽会将玩家重定向回游戏,并附加一个一次性 Token。游戏客户端可以提取此 Token 并使用它将游客玩家的进度与新创建的玩家账号关联起来。
需要技术支持?
联系我们的集成技术团队: integration@aghanim.com