- この記事は、Google Playゲームサービスに関する記事を和訳したものです。
- 原文: Achievements in Android Games
- 元記事のライセンスは CC-BYで、この和訳記事のライセンスは CC-BYです。
- 自己責任でご利用ください。
- 和訳した時期は 2019年7月ころです。
このガイドでは、あなたのゲームにて実績をアンロックおよび表示するために、Androidアプリケーションにて実績 APIを使用する方法を示しています。
APIは、com.google.android.gms.games
および com.google.android.gms.games.achievements
パッケージにあります。
始める前に
もしまだそうしていなければ、実績のゲームコンセプトをレビューすることは役立つかもしれません。
実績 APIを使用してコーディングし始める前に:
- Google Playゲームサービスを使用するには、Set Up Google Play Services SDKガイドにある、あなたのアプリをインストールし、セットアップするための指示に従ってください。
- Google Play Console guideの指示に従うことによって、あなたのゲームがアンロックあるいは表示したい実績を定義します。
- Android samples pageにて実績のコードサンプルをダウンロードし、レビューします。
- 品質チェックリストに記述された勧告をよく理解してください。
実績クライアントを取得する
実績 APIを使用し始めるには、あなたのゲームは、まず AchievementsClient
オブジェクトを取得しなければなりません。
Games.getAchievementClient()
メソッドを呼び出し、アクティビティと、現在のプレイヤーの 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ゲームサービスは自動的に実績をアンロックします。
実績 IDを strings.xml
ファイルに定義することは良い習慣です、そうすれば、あなたのゲームは実績をリソース IDによって参照することができます。
実績を更新し読み込むための呼び出しをするときは、あなたの APIクォータを超えることを避けるために、これらの ベストプラクティスにも従ってください。
実績を表示する
プレイヤーの実績を表示するには、デフォルトの実績のユーザインタフェースを作成するための Intent
を取得するために、AchievementsClient.getAchievementsIntent()
を呼び出します。
あなたのゲームは、それから startActivityForResult
を呼び出すことによって UIを起動することができます。
次のコードスニペットは、あなたのアプリがデフォルトの実績ユーザインタフェースを表示する方法を示しています。
スニペットにて、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); } }); }
デフォルトの実績の UIの一例を以下に示します。
