このドキュメントでは、Unity 用 Google Play Games プラグインを使用するように Unity プロジェクトを設定する方法について説明します。プラグインをインストールして Unity プロジェクトを構成する方法を学びます。また、認証サービスを確認する方法についても説明します。
始める前に
ソフトウェア要件を確認します。 Google Play Console を設定し、Unity エディタをインストールします。
Unity エディタをインストールし、 Unity でゲームを作成します。
プラグインのインストール
Unity エディタで Unity 用 Google Play Games プラグインをダウンロードしてインストールする手順は次のとおりです。
GitHub リポジトリをダウンロードします。
current-buildディレクトリで、unitypackageファイルを見つけます。このファイルはプラグインを表します。たとえば、次のようなファイルです。current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
Unity プロジェクトを設定する
プレーヤー設定で Unity プロジェクトを設定する手順は次のとおりです。
ゲーム プロジェクトを開きます。
Unity エディタで、[Assets] > [Import Package] > [Custom Package] をクリックして、
unitypackageファイルをプロジェクトのアセットにインポートします。現在のビルド プラットフォームが Android に設定されていることを確認します。
メインメニューで、[File] > [Build Settings...] をクリックします。
[Android] を選択し、[Switch Platform] をクリックします。
[Window] > [Google Play Games] に新しいメニュー項目が表示されます。表示されない場合は、[Assets] > [Refresh] をクリックしてアセットを更新し、もう一度ビルド プラットフォームを設定してみてください。
Unity エディタで、[File] > [Build Settings] > [Player Settings] > [Other Settings] をクリックします。
[対象 API レベル] ボックスで、バージョンを選択します。
[Scripting backend] ボックスに「
IL2CPP」と入力します。[Target architectures] ボックスで値を選択します。
パッケージ名 package_name をメモします。この情報 は後で使用できます。
新しいキーストアを作成する
認証情報を検証するには、キーが必要です。 手順は次のとおりです。
- Unity エディタで、[File] > [Build settings] > [Player settings] をクリックします。
- [公開設定] セクションで [キーストアマネージャー] をクリックします。
- [キーストアマネージャー] ウィンドウで、[キーストア] > [新規作成] > [任意の場所] をクリックします。
- フォルダを選択し、キーストアの名前を指定します。
- [Password] ボックスにパスワードを入力して確認します。
- [Add key] をクリックします。
フォルダ名をメモします。この名前を使用して、 Google Cloud で認証情報を 作成できます。
Google Play Console から Android リソースをコピーする
Google Play Console で作成する各実績、リーダーボード、イベントには、Unity プロジェクトを設定するときに使用する Android リソースが含まれます。
ゲームの Android リソースを取得する手順は次のとおりです。
Google Play Console で、 ゲームを開きます。
[**Play ゲームサービス - 設定**] ページ(**[ユーザーを増やす] [Play ゲームサービス] [設定と管理] [設定]** )で、 [**リソースを取得**] をクリックします。
[リソース] ウィンドウで、[Android(XML)] タブをクリックします。
Android リソース(
AndroidManifest.xml)の内容を選択してコピーします。
Unity プロジェクトに Android リソースを追加する
Unity プロジェクトに次のような Android リソースを追加します。
Unity エディタで、[ウィンドウ] > [Google Play Games] > [設定] > [Android の設定] をクリックします。
- [定数を保存するディレクトリ] フィールドに、定数ファイルのフォルダ名を入力します。
[Constants クラス名] フィールドに、作成する C# クラスの名前(名前空間を含む)を入力します。
たとえば、C# クラスが
id.csで、[Assets] > [myproject] > [scripts] > [id.cs] にある場合、 定数クラス名はmyproject.scripts.idになります。[リソース定義] フィールドに、Google Play Console からコピーした Android リソースデータ(
AndroidManifest.xmlファイル)を貼り付けます。省略可: [Client ID] フィールドに、リンクされたウェブアプリのクライアント ID を入力します。
Google Cloud からゲームのクライアント ID を取得するには、 クライアント ID を作成するをご覧ください。
ゲームにウェブベースのバックエンド があり、バックエンド サーバーでサーバー認証コードをアクセス トークンと交換する必要がある場合や、プレーヤーが ゲーム以外の他の API 呼び出しを行うために ID トークンが必要になる場合にのみ必要です。
[セットアップ] をクリックします。これにより、クライアント ID を使用してゲームが構成され、各 Android リソースの定数を含む C# クラスが生成されます。
Unity エディタで、[ウィンドウ] > [Google Play Games] > [設定] > [Nearby Connections Setup] をクリックします。
[Nearby connection service ID] フィールドに、 package_name を入力します。
Unity プロジェクトの 設定で使用したのと同じ package_name を使用します。
[セットアップ] をクリックします。
ソーシャル プラットフォームを選択する
Google Play Games サービス プラグインは、Unity's ソーシャル インターフェースを実装しています。 これにより、他のプラットフォームと統合する際に、すでにそのインターフェースを使用しているゲームとの互換性が確保されます。ただし、一部の機能は Play Games に固有のものであり、Unity が提供する標準のソーシャル インターフェースの拡張機能として提供されます。
標準 API 呼び出しには、ISocialPlatform インターフェースへの参照である Social.Active オブジェクトを介してアクセスできます。標準以外の Google Play Games サービス拡張機能にアクセスするには、Social.Active オブジェクトを追加メソッドが利用可能な PlayGamesPlatform クラスにキャストします。
デフォルトのソーシャル プラットフォームをオーバーライドせずにプラグインを使用する
PlayGamesPlatform.Activate を呼び出すと、
Google Play Games サービスがデフォルトのソーシャルプラットフォームの実装になります。つまり
、Google Play Games サービス プラグインは、Social と
Social.Active のメソッドへの静的な呼び出しを実行します。これは、プラグインを使用するほとんどのゲームで想定される動作です。
ただし、なんらかの理由でデフォルトの実装にアクセスできる状態を保持する必要がある(例: 実績とリーダーボードを別のソーシャル プラットフォームに送信するために使用する)場合は、デフォルトのプラグインをオーバーライドすることなく Google Play Games サービス プラグインを使用できます。操作:
PlayGamesPlatform.Activateメソッドを呼び出します。XyzがSocialクラスで呼び出すメソッドの名前である場合は、Social.Xyzを呼び出さないでください。代わりに、PlayGamesPlatform.Instance.Xyzを呼び出します。- Google Play Games サービスを操作する場合は、
Social.ActiveではなくPlayGamesPlatform.Instanceプロパティを使用します。
これにより、スコアや実績を 2 つ以上のソーシャル プラットフォームに同時に送信することも可能です。
// Submit achievement to original default social platform
Social.ReportProgress("MyAchievementIdHere", 100.0f, callback);
// Submit achievement to Google Play
PlayGamesPlatform.Instance.ReportProgress("MyGooglePlayAchievementIdHere", 100.0f, callback);
認証サービスを確認する
ゲームを開くと、 プラットフォーム認証を使用して自動的に Play Games サービスへの接続が試行されます。接続に成功すると、ゲームにログイン プロンプトが表示され、Unity 用 Google Play Games サービス プラグインを使用できるようになります。
ユーザーがデバイスで Google Play Games サービスを一度も使用したことがない場合、ユーザーは Play Games アカウントを作成するための、1 回限りの設定画面に自動的にリダイレクトされます。
スクリプトの Start メソッドで、自動認証の試行結果をリッスンし、認証ステータスを取得して、ユーザーが認証されていない場合は Play Games サービス機能を無効にします。
Unity プラグインのバージョンが v11 より前の場合は、認証機能を使用できません。
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication);
}
internal void ProcessAuthentication(SignInStatus status) {
if (status == SignInStatus.Success) {
// Continue with Play Games Services
} else {
// Disable your integration with Play Games Services or show a login button
// to ask users to authenticate. Clicking it should call
// PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
}
}
結果コードは列挙型であり、認証の失敗理由を特定するために使用できます。
Unity のソーシャル プラットフォームを使用する場合は、以下のコードを使用することもできます。
using GooglePlayGames;
public void Start() {
PlayGamesPlatform.Activate();
Social.localUser.Authenticate(ProcessAuthentication);
}
Authenticate
から成功値が返されるまで、Google Play Games サービス API
呼び出しは行えません。そのため、コールバックが呼び出されるまで待機画面を表示し、認証が完了するまでユーザーがゲームを開始できないようにすることをおすすめします。
自動トリガーによるプロフィールの作成を防止する
マニフェスト ファイルを使用して、自動トリガーによるプロフィールの作成プロンプトを無効にできます。これにより、Play Games サービス プロフィールを持っていないユーザーは、Play Games サービス プロフィールの作成を求められることなく、ゲームを読み込むことができます。 詳細については、プロフィールの作成オプションをご覧ください。
この機能を使用するには、次の条件を満たしていることを確認してください。
- デバイスに、ログインしている Google アカウントの Play Games サービス プロフィールがない。
- ゲームが Play Games サービス
Unity プラグイン
2.1.0以降と統合されている。
AndroidManifest.xmlファイルで、com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATIONタグを<meta-data>要素に追加し、<application>要素に属性を追加します。<application> ... <meta-data android:name="com.google.android.gms.games.SUPPRESS_GAME_PROFILE_CREATION" android:value="true" /> ... </application>
このフラグを true に設定すると、ゲームがプロフィールの作成プロセスを処理することを Play Games サービスに通知します。そのため、Play Games サービスは、既存の Play Games サービス プロフィールを持っていないデバイスのユーザーに対して、プロフィールの作成ユーザー インターフェースを自動的に表示しません。
Play Games サービス プロフィールがないためにユーザーが認証されていない場合に対処するには、 PlayGamesPlatform.Instance.IsAuthenticated() を使用します。プロフィールの作成に失敗するため、このメソッドは
falseを返します。この問題を解決するには、プロフィール 作成プロセスを呼び出し PlayGamesPlatform.Instance.ManuallyAuthenticate()て開始します。if (!PlayGamesPlatform.Instance.IsAuthenticated()) { // The user is unauthenticated, likely due to a missing Play Games profile. // Calling PlayGamesPlatform.Instance.ManuallyAuthenticate() will trigger // the profile creation UI. PlayGamesPlatform.Instance.ManuallyAuthenticate((SignInStatus status) => { // ... }); }抑制タグを追加したら、
logcatウィンドウを使用して追加を確認します。logcatの出力には、「Game opted out of automatic profile creation prompt (using manifest)」のようなメッセージが含まれます。
Play アプリ署名を使用する
Google は、Play アプリ署名を使用してアプリの署名鍵を管理、保護します。 Play アプリ署名を使用して、最適化された配布に Android App Bundle ファイルに署名できます。Play アプリ署名は、Google の安全なインフラストラクチャにアプリ署名鍵を保存します。 Play アプリ署名を使用するには、まず Unity エディタで AAB ファイルを作成してダウンロードする必要があります。その後、AAB ファイルを Google Play Console にアップロードして、内部テスト版リリースを作成できます。
AAB ファイルを作成する
Unity エディタで AAB ファイルを作成する手順は次のとおりです。
- Unity エディタで、[ファイル] > [ビルド設定] をクリックします。
[Build App Bundle(Google Play)] を選択します。
詳細については、 Android ビルド設定のリファレンスをご覧ください。
[Build] をクリックします。
Unity エディタから AAB ファイルをダウンロードします。
内部テスト版リリースを作成する
内部テスト版リリースを作成して Google Play Console にテスターを追加する手順は次のとおりです。
- Google Play Console でゲームを選択します。
- [テストとリリース] ページ([テスト] >[内部テスト])に移動します。
- [アップロード] をクリックして、AAB ファイルを選択します。
- [リリース詳細] フィールドに名前を入力します。
- [次へ] をクリックして、リリース詳細を確認します。
- [保存して公開] をクリックします。
[テスター] タブで、[メーリング リストの作成] をクリックして、最大 100 人のテスターを追加します。
詳細については、 内部テスト: 最大 100 人のテスターを管理するをご覧ください。
[フィードバック用の URL またはメールアドレス] に、フィードバックを提供するフィードバック URL またはメール アドレスを入力します。
[保存] をクリックします。
アプリ署名認証情報を確認する
- Google Play Console でゲームを選択します。
- [テストとリリース] ページ ([設定] > [アプリ署名])に移動します。
- アプリ署名認証情報を確認します。
プロジェクトをビルドして実行する
この時点で、ゲーム プロジェクトをビルドして実行できます。ゲームが開始されると、自動認証の試行が行われます。
USB デバッグが有効になっている Android 搭載の物理デバイス、または開発したプロジェクトを実行できるエミュレータが必要です。
サーバー認証コードを取得する
現在のプレーヤーに代わってバックエンド ウェブサーバーで Google API にアクセスするには、クライアント アプリケーションから認証コードを取得し、取得したコードをウェブサーバー アプリケーションに渡す必要があります。その後、コードをアクセス トークンと交換することで、さまざまな API を呼び出すことができます。ワークフローの詳細については、 ウェブ向け Google でログインをご覧ください。
サーバー側のアクセスコードを取得するには:
- Google Play Console でゲームのウェブ クライアント ID を追加します。
- Google Play Console で、 ゲームを選択します。
- [設定] ページ([ユーザーを増やす] > [Play ゲームサービス] > [設定と管理] > [設定] )で、[認証情報を追加] をクリックします。
- [認証情報を追加] ページで、[ゲームサーバー] を選択します。
- OAuth 2.0 クライアント ID を生成します。
- クライアント ID の値をメモします。この値は後で指定する必要があります。
ウェブ クライアント ID を Unity Hub に追加します。
- Unity Hub で、Unity 用 Google Play Games を設定して認証します。
- Unity Hub で、[ウィンドウ] > [Google Play Games] > [設定] > [Android の設定] に移動します。
- クライアント ID の値を入力します。
追加のスコープのサーバー認証コードを取得します。
C#
using GooglePlayGames.BasicApi; // Define selectedScope having additional identity scopes. private List
selectedScopes = new List (); // Add scopes you want to request. selectedScopes.Add(AuthScope.OPEN_ID); selectedScopes.Add(AuthScope.PROFILE); selectedScopes.Add(AuthScope.EMAIL); // Call RequestServerSideAccess with additional scopes and retrieve // authcode and grantedscopes list. PlayGamesPlatform.Instance.RequestServerSideAccess( /* forceRefreshToken= */ false,selectedScopes (AuthResponse authResponse) => { string authCode = authResponse.GetAuthCode(); List grantedScopes = authResponse.GetGrantedScopes(); // send authCode to server... });
機能の設定と追加
Play ゲームサービスの機能を有効にします。
Play ゲームサービス API を使用してゲームに機能を追加します。
Unity 用 Recall API (Unity プラグイン バージョン v11 以降でのみサポート)