游戏创意与功能

你的下一项功能

成就

每位玩家每个键只解锁一次。手动规则信任游戏;统计阈值在同一受影响的上报事务内评估。

SDK:develop 分支需要玩家会话
Unity
成就功能示意图
可见的结果

操作后,同一玩家的first_steps已解锁。重复同一键不会再次解锁或发放奖励。

视频稍后提供

此步骤尚无视频。指南和MCP请求已可使用。

成就

准备同一个项目

  1. 在仪表盘中选择与游戏配置相同的项目。

    成就 →
  2. 在控制台表单中创建或复用这些测试条目。这些是示例值,并非项目当前数据。

    键名
    first_steps
    名称
    First steps
    解锁规则
    manual
    启用
    true
    解锁前隐藏
    false
    无奖励
    []

    每位玩家每个键只解锁一次。手动规则信任游戏;统计阈值在同一受影响的上报事务内评估。

  3. 运行示例前先保存、重新加载并核对条目。保留其他定义。

实现此功能

你可以预览指南。运行需要有效的项目密钥。 准备项目

已安装 SDK、导入项目配置,且玩家已登录。

此 SDK 示例使用 develop。请检查已安装的 SDK 是否具备所需 API。

先通过快速入门连接目标玩家,再通过明确的按钮或场景操作调用RunReviewedAction()。仅打开文件不会发送请求。

C#
Assets/Scripts/AchievementsDemo.cs
horizOn 调用
1using System.Linq;
2using UnityEngine;
3using PM.horizOn.Cloud.Core;
4using PM.horizOn.Cloud.Manager;
5​
6// Existing SDK/project configuration and authenticated player session required.
7// Call RunReviewedAction explicitly after reviewing this example and its data.
8// 奖励在解锁时立即发放。如果发放失败,整个操作会回滚。
9// This explicit action unlocks the shown configured achievement key.
10public sealed class AchievementsDemo : MonoBehaviour
11{
12 public async void RunReviewedAction()
13 {
14 var sessionUser = UserManager.Instance.CurrentUser;
15 if (sessionUser == null || !sessionUser.IsValid()) return;
16 var userId = UserManager.Instance.CurrentUser.UserId;
17 var manager = AchievementsManager.Instance;
18 var loaded = await manager.GetAchievements(userId);
19 if (!loaded.IsSuccess) { Debug.LogWarning(loaded.ErrorCode); return; }
20 foreach (var progress in loaded.Data.progress)
21 Debug.Log(progress.key + ": " + progress.rewardState);
22​
23 // Configure a manual first_steps definition, then call this on the matching game action.
24 var unlocked = await manager.Unlock(userId, "first_steps");
25 if (!unlocked.IsSuccess) { Debug.LogWarning(unlocked.ErrorCode); return; }
26 // Repeat the same key after timeout; never create a replacement reward identity.
27 // rewardState is complete, unlockedAt is null, and deliveryResults is empty.
28 // Values were credited atomically. Read PlayerValues again when showing the balance.
29 // No Inbox claim or local value addition. Refresh achievements after statistics updates.
30 }
31}
打开完整SDK示例 ↗

测试你的新功能。

操作后,同一玩家的first_steps已解锁。重复同一键不会再次解锁或发放奖励。

在仪表盘中选择与游戏配置相同的项目。

接口
  • GET/achievements
  • POST/achievements/unlock
  • POST/achievements/rewards/deliver
API 参考中的全部接口
下一步建议

为每一局添加最高分。

每局结束后保存分数并展示领先者。继续使用现有连接和玩家会话。