Android 游戏中的成就

本指南介绍了如何在 Android 应用中使用成就 API 以在游戏中解锁和显示成就。这些 API 可在 com.google.android.gms.gamescom.google.android.gms.games.achievements 软件包中找到。

准备工作

请阅读成就游戏概念(如果您尚未阅读)。

开始使用成就 API 进行编码之前,请执行以下操作:

获取成就客户端

若要开始使用成就 API,您的游戏必须先获取 AchievementsClient 对象。为此,您可以调用 Games.getAchievementClient() 方法并传入 activity 和 GoogleSignInAccount,代表当前玩家。要了解如何检索 玩家账号信息,请参阅在 Android 游戏中登录

解锁成就

如需解锁成就,请调用 AchievementsClient.unlock() 方法并 传入成就 ID。

以下代码段展示了应用如何解锁成就:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .unlock(getString(R.string.my_achievement_id));

如果成就属于增量类型(也就是说,需要执行几个步骤才能达成) 解锁),请改为调用 AchievementsClient.increment()

以下代码段展示了应用如何增加玩家的成就:

Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
    .increment(getString(R.string.my_achievement_id), 1);

您无需额外编写代码即可解锁成就;Google Play 游戏服务 成就达到其要求的步骤后会自动解锁。

最好在 strings.xml 文件中定义成就 ID,以便游戏按资源 ID 引用成就。调用 update 和 load 时 也请务必遵循这些最佳实践 避免超出您的 API 配额

显示成就

如需显示玩家的成就,请调用 AchievementsClient.getAchievementsIntent() 以获取 Intent 以创建 默认成就界面然后,您的游戏可以通过调用 startActivityForResult 启动界面。

以下代码段展示了应用如何显示默认成就界面。 在该代码段中,RC_ACHIEVEMENT_UI 是游戏用作请求代码的任意整数。

private static final int RC_ACHIEVEMENT_UI = 9003;

private void showAchievements() {
  Games.getAchievementsClient(this, GoogleSignIn.getLastSignedInAccount(this))
      .getAchievementsIntent()
      .addOnSuccessListener(new OnSuccessListener<Intent>() {
        @Override
        public void onSuccess(Intent intent) {
          startActivityForResult(intent, RC_ACHIEVEMENT_UI);
        }
      });
}

默认成就界面的示例如下所示。