Android 遊戲成就

本指南將說明如何運用 Android 應用程式內的成就 API 在遊戲中解鎖並顯示成就。您可以在 com.google.android.gms.gamescom.google.android.gms.games.achievements 套件中取得此 API。

事前準備

如果您還沒複習成就遊戲概念,這些概念可能對您有幫助,建議您前往參閱。

在使用成就 API 撰寫程式碼之前:

取得成就用戶端

遊戲必須先取得 AchievementsClient 物件才能使用成就 API。您可以藉由呼叫 Games.getAchievementClient() 並傳遞到活動內達到此目的。

解鎖成就

若要解鎖成就,需呼叫 AchievementsClient.unlock() 方法並傳遞成就 ID。

以下程式碼片段將展示應用程式如何解鎖成就:

PlayGames.getAchievementsClient(this).unlock(getString(R.string.my_achievement_id));

如果成就是「漸進式」類型的 (需要進行多個步驟才能解鎖的成就),請改為呼叫 AchievementsClient.increment()

以下程式碼片段將展示應用程式如何漸進式累計玩家成就:

PlayGames.getAchievementsClient(this).increment(getString(R.string.my_achievement_id), 1);

您不需要另外撰寫解鎖成就的程式碼,只要完成必要的步驟數量後,Google Play 遊戲服務會自動解鎖成就。

建議您在 strings.xml 檔案中定義成就 ID,以便遊戲按照資源 ID 參照成就。撰寫更新及載入成就的呼叫內容時,請遵守最佳做法,避免超出 API 配額。

顯示成就

若要顯示玩家的成就,請呼叫 AchievementsClient.getAchievementsIntent() 取得 Intent,以便建立預設的成就使用者介面。然後,您的遊戲就能藉由呼叫 startActivityForResult 顯示這個 UI 了。

以下程式碼片段將展示應用程式如何顯示預設的成就使用者介面。在這個片段中,RC_ACHIEVEMENT_UI 代表遊戲用來當做要求代碼的任意整數。

private static final int RC_ACHIEVEMENT_UI = 9003;

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

預設關卡的使用者介面範例顯示如下。