跳转到内容

成就

成就能力分为三类:解锁成就、上报成就进度、清除当前游戏全部成就。成就 key 必须与后台配置一致,示例中的 key 仅用于说明调用方式。

引擎状态说明
UnityPreview主包提供公开调用入口。
GameMakerPreviewWindows runtime 提供解锁、进度上报和清除全部成就。
Godot开发中预览 runtime 已有成就调用入口。
  • 已完成 启动与连接
  • 后台已经创建对应成就。
  • 游戏代码中的成就 key 和后台配置一致。
  • Unity / GameMaker / Godot 当前都通过本机 IGP 桌面客户端完成成就调用。
using UnityEngine;
using IGP.UnitySDK;
public sealed class IGPAchievementButtons : MonoBehaviour
{
[SerializeField] private IGPRuntimeManager runtimeManager;
public async void UnlockFirstSession()
{
var result = await IGPSDK.UnlockAchievementAsync(
runtimeManager,
"first_session");
Debug.Log($"Unlock success={result.success}, duplicated={result.duplicated}");
}
public async void AddMatchProgress()
{
var result = await IGPSDK.ReportAchievementProgressAsync(
runtimeManager,
"matches_played",
1,
"match_complete");
Debug.Log($"Progress success={result.success}, duplicated={result.duplicated}");
}
public async void ClearAllAchievements()
{
var result = await IGPSDK.ClearAchievementsAsync(runtimeManager);
Debug.Log($"Clear success={result.success}, deleted={result.deletedCount}");
}
}
引擎检查点
Unity调用后日志中出现 successduplicatedmessage;清除时会返回 deletedCount
GameMaker事件队列中收到 achievement_resultachievement_clear_result
Godot调用后触发 AchievementReportedAchievementsCleared signal。
  • success=false:先检查成就 key 是否存在。
  • duplicated=true:表示该成就之前已经解锁,不一定是错误。
  • 清除全部成就只影响当前游戏下当前登录用户的成就记录,通常只建议用于调试、测试或后台明确允许的重置流程。
  • 没有任何结果:先确认 IGP 桌面客户端已连接,再确认游戏代码是否在轮询或监听事件。
  • 分步成就进度异常:确认后台成就类型和进度上报值是否匹配。