Unity 用 Google Play Games を設定してログインする

このドキュメントでは、Unity 用 Google Play Games プラグインを使用するように Unity プロジェクトを設定する方法について説明します。プラグインをインストールして Unity プロジェクトを構成する方法について説明します。また、このドキュメントでは、ログイン サービスを検証する方法についても説明します。

始める前に

ソフトウェアの要件を確認します。Google Play Console を設定し、Unity Hub をインストールします。

プラグインのインストール

Unity 用の Google Play Games プラグインをダウンロードしてインストールするには、Unity Hub で次の手順を行います。

  1. GitHub リポジトリをダウンロードします。

  2. current-build ディレクトリで unitypackage ファイルを探します。このファイルはプラグインを表します。たとえば、次のようになります。

      current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
    

Unity プロジェクトを設定する

プレーヤーの設定で Unity プロジェクトを設定する手順は次のとおりです。

  1. ゲーム プロジェクトを開きます。

  2. Unity Hub で、[Assets] > [Import Package] > [Custom Package] をクリックして、unitypackage ファイルをプロジェクトのアセットにインポートします。

  3. 現在のビルド プラットフォームが Android に設定されていることを確認します。

    1. メインメニューで、[File] > [Build Settings] をクリックします。

    2. [Android] を選択し、[Switch Platform] をクリックします。

    3. [Window] > [Google Play Games] に新しいメニュー項目が表示されます。表示されない場合は、[Assets] > [Refresh] をクリックしてアセットを更新し、もう一度ビルド プラットフォームを設定してみてください。

  4. Unity Hub で、[File] > [Build Settings] > [Player Settings] > [Other Settings] をクリックします。

  5. [Target API level] ボックスで、バージョンを選択します。

  6. [Scripting backend] ボックスに「IL2CPP」と入力します。

  7. [ターゲット アーキテクチャ] ボックスで値を選択します。

  8. パッケージ名 package_name をメモします。この情報は後で使用します。

Unity プロジェクトのプレーヤー設定
Unity プロジェクトのプレーヤー設定。

新しいキーストアを作成する

認証情報を検証するには、鍵が必要です。手順:

  1. Unity Hub で、[File] > [Build settings] > [Player settings] をクリックします。
  2. [公開設定] セクションで、[キーストア マネージャー] をクリックします。
    1. [Keystore manager] ウィンドウで、[Keystore] > [Create new] > [Anywhere] をクリックします。
    2. フォルダを選択し、キーストアの名前を指定します。
    3. [パスワード] ボックスにパスワードを入力して確認します。
    4. [鍵を追加] をクリックします。

フォルダ名をメモします。この名前を使用して、Google Cloud で認証情報を作成できます。

Google Play Console から Android リソースをコピーする

Google Play Console で作成する各実績、リーダーボード、イベントには、Unity プロジェクトを設定するときに使用する Android リソースが含まれます。

ゲームの Android リソースを入手する手順は次のとおりです。

  1. Google Play Console でゲームを開きます。

  2. [Play ゲームサービス - 設定] ページ([成長] > [Play ゲームサービス] > [設定と管理] > [設定])で、[リソースを取得] をクリックします。

  3. [Resources] ウィンドウで、[Android(XML)] タブをクリックします。

  4. Android リソース(AndroidManifest.xml)のコンテンツを選択してコピーします。

Unity プロジェクトに Android リソースを追加します。

Unity プロジェクトに次の Android リソースを追加します。

  1. Unity Hub で、[Window] > [Google Play Games] > [Setup] > [Android Setup] をクリックします。

    • [定数を保存するディレクトリ] フィールドに、定数ファイルのフォルダ名を入力します。
    • [Constants クラス名] フィールドに、作成する C# クラスの名前(名前空間を含む)を入力します。

      たとえば、C# クラスが id.cs で、[アセット] > [myproject] > [scripts] > [id.cs] にある場合。定数クラス名は myproject.scripts.id にできます。

    • [Resources definition] フィールドに、Google Play Console からコピーした Android リソースデータ(AndroidManifest.xml ファイル)を貼り付けます。

    • 省略可: [クライアント ID] フィールドに、リンクされたウェブアプリのクライアント ID を入力します。

      Google Cloud からゲームのクライアント ID を取得するには、クライアント ID の作成をご覧ください。

      これは、ゲームにウェブベースのバックエンドがあり、バックエンド サーバーでサーバー認証コードをアクセス トークンと交換する必要がある場合や、プレーヤーがゲーム以外の他の API 呼び出しを行うために ID トークンが必要になる場合にのみ必要です。

    • [セットアップ] をクリックします。これにより、クライアント ID を使用してゲームが構成され、各 Android リソースの定数を含む C# クラスが生成されます。

  2. Unity Hub で、[Window] > [Google Play Games] > [Setup] > [Nearby Connections Setup] をクリックします。

    • [Nearby connection service ID] フィールドに「package_name」と入力します。

      Unity プロジェクトを設定するで使用したのと同じ package_name を使用します。

    • [設定] をクリックします。

ソーシャル プラットフォームを選択する

Google Play Games サービス プラグインは、Unity のソーシャル インターフェースを実装しています。これにより、他のプラットフォームと統合する際に、すでにそのインターフェースを使用しているゲームとの互換性が確保されます。ただし、一部の機能は Play ゲームに固有のものであり、Unity が提供する標準のソーシャル インターフェースの拡張機能として提供されます。

標準 API 呼び出しには、ISocialPlatform インターフェースへの参照である Social.Active オブジェクトを介してアクセスできます。標準以外の Google Play Games サービス拡張機能にアクセスするには、Social.Active オブジェクトを追加メソッドが利用可能な PlayGamesPlatform クラスにキャストします。

デフォルトのソーシャル プラットフォームをオーバーライドせずにプラグインを使用する

PlayGamesPlatform.Activate を呼び出すと、Google Play Games サービスがデフォルトのソーシャル プラットフォームの実装になります。つまり、SocialSocial.Active のメソッドへの静的な呼び出しが Google Play Games サービス プラグインによって行われます。これは、プラグインを使用するほとんどのゲームで想定される動作です。

ただし、なんらかの理由でデフォルトの実装にアクセスできる状態を保持する必要がある(例: 実績とリーダーボードを別のソーシャル プラットフォームに送信するために使用する)場合は、デフォルトのプラグインをオーバーライドすることなく Google Play Games サービス プラグインを使用できます。そのためには、次のような処理を行います。

  1. PlayGamesPlatform.Activate は呼び出さないでください
  2. XyzSocial クラスで呼び出す必要があるメソッドの名前である場合は、Social.Xyz を呼び出さないでください。代わりに PlayGamesPlatform.Instance.Xyz を呼び出します。
  3. 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 ゲームサービスへの接続が試行されます。接続に成功すると、ゲームにログイン プロンプトが表示され、Unity 用 Google Play Games サービス プラグインを使用できるようになります。

ユーザーがデバイスで Google Play Games サービスを一度も使用したことがない場合、ユーザーは Play Games アカウントを作成するための、1 回限りの設定画面に自動的にリダイレクトされます。

スクリプトの Start メソッドで、自動ログインの試行結果をリッスンし、認証ステータスを取得して、ユーザーがログインしていない場合は Play ゲームサービス機能を無効にします。

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 sign-in. Clicking it should call
        // PlayGamesPlatform.Instance.ManuallyAuthenticate(ProcessAuthentication).
      }
    }

結果コードは列挙型であり、ログインに失敗した理由を特定するために使用できます。

Unity のソーシャル プラットフォームを使用する場合は、以下のコードを使用することもできます。

  using GooglePlayGames;

  public void Start() {
    PlayGamesPlatform.Activate();
    Social.localUser.Authenticate(ProcessAuthentication);
  }

Authenticate から成功値が返されるまで、Google Play Games Services API 呼び出しは行えません。そのため、コールバックが呼び出されるまで待機画面を表示し、認証が完了するまでユーザーがゲームを開始できないようにすることをおすすめします。

」をご覧ください。

Play アプリ署名を使用する

Google は、Play アプリ署名を使用してアプリの署名鍵を管理、保護します。Play App Signing を使用すると、最適化された配布用の Android App Bundle(AAB)ファイルに署名できます。Play アプリ署名は、Google の安全なインフラストラクチャにアプリ署名鍵を保存します。Play アプリ署名を使用するには、まず Unity Hub から AAB ファイルを作成してダウンロードする必要があります。その後、AAB ファイルを Google Play Console にアップロードして、内部テスト用リリースを作成できます。

AAB ファイルを作成する

Unity Hub で AAB ファイルを作成する手順は次のとおりです。

  1. Unity Hub で、[File] > [Build settings] をクリックします。
  2. [Build App Bundle ( Google Play )] を選択します。

    詳しくは、Android ビルド設定リファレンスをご覧ください。

  3. [Build] をクリックします。

  4. Unity Hub から AAB ファイルをダウンロードします。

内部テスト版リリースを作成する

Google Play Console で内部テスト版リリースを作成し、テスターを追加する手順は次のとおりです。

  1. Google Play Console でゲームを選択します。
  2. [テストとリリース] ページ([テスト> 内部テスト])に移動します。
  3. [アップロード] をクリックし、AAB ファイルを選択します。
  4. [リリースの詳細] フィールドに名前を入力します。
  5. [次へ] をクリックして、リリースの詳細を確認します。
  6. [保存して公開] をクリックします。
  7. [テスター] タブで [メーリング リストの作成] をクリックし、最大 100 人のテスターを追加します。

    詳しくは、内部テスト: 最大 100 人のテスターを管理するをご覧ください。

  8. [フィードバック用の URL またはメールアドレス] に、フィードバック用の URL またはメールアドレスを入力します。

  9. [Save] をクリックします。

アプリ署名の認証情報を確認する

  1. Google Play Console でゲームを選択します。
  2. [テストとリリース] ページ([設定> アプリ署名])に移動します。
  3. アプリ署名の認証情報を確認します。

プロジェクトをビルドして実行する

この時点で、ゲーム プロジェクトをビルドして実行できます。ゲームの開始時に、自動ログインの試行が表示されます。

USB デバッグを有効にした Android 搭載の物理デバイス、または開発したプロジェクトを実行できるエミュレータが必要です。

サーバー認証コードを取得する

現在のプレーヤーに代わってバックエンド ウェブサーバーで Google API にアクセスするには、クライアント アプリケーションから認証コードを取得し、取得したコードをウェブサーバー アプリケーションに渡す必要があります。その後、コードをアクセス トークンと交換することで、さまざまな API を呼び出すことができます。ワークフローの詳細については、ウェブ向け「Google でログイン」をご覧ください。

サーバー側のアクセスコードを取得するには:

  1. Google Play Console でゲームにリンクされているウェブ アプリケーションのウェブ クライアント ID を構成します。

  2. プレーヤーが認証されたら PlayGamesPlatform.Instance.RequestServerSideAccess を呼び出して、サーバー側のアクセスコードを取得します。

  3. このコードをサーバー アプリケーションに渡します。

  PlayGamesPlatform.Instance.RequestServerSideAccess(
    /* forceRefreshToken= */ false,
    code -> {
      // send code to server
    });

機能の設定と追加