正版校验
正版校验用于确认当前玩家是否在 IGP 平台上合法持有这款游戏。建议尽早接入启动流程,避免玩家进入主要玩法后才处理失败结果。
| 引擎 | 状态 | 说明 |
|---|---|---|
| Unity | Preview | 通过 IGPRuntimeManager 自动接入桌面客户端授权流程。 |
| GameMaker | Preview | 通过 Windows runtime 和本机桌面客户端完成授权。 |
| Godot | 暂未暴露独立入口 | 当前 Godot 侧主要覆盖启动票据、房间和成就,尚未提供独立正版校验 API。 |
- 已完成 启动与连接。
- 已配置 IGP 分配的
appId。 - 本机 IGP 桌面客户端可用。
- 需要验证正式游戏时,后台授权配置必须和当前
appId对齐。
Unity 项目通常只需配置 appId,运行时会处理授权流程。业务侧主要监听状态变化。
using UnityEngine;using IGP.UnitySDK;
public sealed class IGPAuthorizationView : MonoBehaviour{ [SerializeField] private IGPRuntimeManager runtimeManager;
private void OnEnable() { runtimeManager.onAuthorizationStateChanged.AddListener(OnAuthorizationChanged); runtimeManager.onAuthorizationFailed.AddListener(OnAuthorizationFailed); }
private void OnDisable() { runtimeManager.onAuthorizationStateChanged.RemoveListener(OnAuthorizationChanged); runtimeManager.onAuthorizationFailed.RemoveListener(OnAuthorizationFailed); }
private void OnAuthorizationChanged(IGPAuthorizationState state) { Debug.Log($"IGP authorization: {state}");
if (runtimeManager.IsAuthorized) { // 允许进入主菜单或继续游戏。 } }
private void OnAuthorizationFailed(string message) { Debug.LogError($"IGP authorization failed: {message}"); }}如需完成最小验证,请先执行 Unity Quick Start。
GameMaker 侧需要先初始化 runtime,再在每帧更新并读取授权状态。
// Createglobal.igp_app_id = YOUR_APP_ID;igp_init(global.igp_app_id, { desktop_auto_attach: true});// Stepigp_update();
var state = igp_get_authorization_state();if (state == "authorized_online" || state == "authorized_offline"){ // 允许进入游戏。}
var evt = igp_poll_event();while (!is_undefined(evt)){ if (evt.type == "authorization_state_changed") { show_debug_message("IGP authorization: " + string(evt.state)); }
evt = igp_poll_event();}完整接入顺序见 GameMaker Quick Start。
Godot 当前没有独立正版校验入口。开发中版本可以从命令行读取启动票据并进入联机流程,但不应将其视为正式的正版校验 API。
| 引擎 | 检查点 |
|---|---|
| Unity | 监听到 AuthorizedOnline 或 AuthorizedOffline,失败时能看到失败原因。 |
| GameMaker | igp_get_authorization_state() 从 pending 进入 authorized_online、authorized_offline 或 failed。 |
| Godot | 当前不做独立正版校验验收。 |
常见问题 / 排查
Section titled “常见问题 / 排查”- 授权持续处于
pending:先确认桌面客户端连接是否已成功。 - 授权失败但连接正常:检查
appId和后台配置是否匹配。 - Unity Editor 中验证桌面能力失败:按 Unity 调试 配置 Editor 调试项。
- GameMaker 没有事件:确认每帧调用了
igp_update(),并持续轮询igp_poll_event()。