このトピックでは、Unity 用 Google Play Games プラグインを使用するように Unity プロジェクトを設定する方法について説明します。プロジェクトの設定、ソーシャル プラットフォームの選択、プレーヤーのログインの設定などのタスクがあります。
始める前に
Google Play Console で、ゲームの Play Console を設定します。
Google Play Console で実績を作成します。
プラグインのインストール
次のいずれかの方法でプラグインを取得します。
GitHub リポジトリのクローンをファイル システムに作成します。
GitHub リポジトリを ZIP ファイルとしてダウンロードして展開します。
current-build
ディレクトリでunitypackage
ファイルを探します。このファイルはプラグインです。たとえば、次のようになります。current-build/GooglePlayGamesPluginForUnity-X.YY.ZZ.unitypackage
Unity でゲーム プロジェクトを開きます。
[Assets] > [Import Package] > [Custom Package] メニュー項目をクリックして、
unitypackage
ファイルをプロジェクトのアセットにインポートします。現在のビルド プラットフォームが Android に設定されていることを確認します。
メインメニューで、[File] > [Build Settings...] をクリックします。
[Android] を選択し、[Switch Platform] をクリックします。
[Window] > [Google Play Games] に新しいメニュー項目が表示されます。表示されない場合は、[Assets] > [Refresh] をクリックしてアセットを更新し、もう一度ビルド プラットフォームを設定してみてください。
Google Play Console から Android リソースを取得する
Google Play Console で作成する各実績、リーダーボード、イベントには、Unity プロジェクトを設定するときに使用する Android リソースが含まれます。
ゲームの Android リソースを入手します。
Google Play Console で、ゲームの Play ゲームサービス プロジェクトを開きます。
[Achievements] タブをクリックし、[Get resources] をクリックします。
[Export resources] ウィンドウで、[Android] タブをクリックします。
XML コンテンツを選択してコピーします。
Unity プロジェクトを設定する
Unity プロジェクトに Android リソースを追加します。
Unity で、** [Window] > [Google Play Games] > [Setup...] > [Android Setup] ** の順にクリックします。
設定ウィンドウで次の項目を入力します。
定数を保存するディレクトリ: 定数ファイルのフォルダ。
Constants クラス名: 作成する C# クラスの名前(名前空間を含む)。
リソース定義: Play Console の Android リソースデータをここに貼り付けます。
ウェブ クライアント ID: リンクされたウェブアプリのクライアント ID。ゲームにウェブベースのバックエンドがあり、バックエンド サーバーでサーバー認証コードをアクセス トークンと交換する必要がある場合、またはプレーヤーがゲーム以外の他の API 呼び出しを行うために ID トークンが必要になる場合にのみ必要です。
[セットアップ] をクリックします。これにより、クライアント ID を使用してゲームが構成され、各 Android リソースの定数を含む C# クラスが生成されます。
Android の設定
Unity で Android SDK のインストール パスを設定します。これは、[設定] メニューの [外部ツール] にあります。
Android の Google Play Games で動作するように Unity ゲームを構成するには、まず Android SDK Manager を開き、次のパッケージがダウンロードされていることを確認します。Android Studio の SDK Manager を使用しているか、スタンドアロンの SDK Manager を使用しているかによって、コンポーネントの名前が異なる場合があります。- Google Play 開発者サービス - Android サポート ライブラリ - サポート ライブラリ用ローカル Maven リポジトリ(Android サポート リポジトリとも呼ばれます) - Google リポジトリ - Android 6.0(API 23)(最小 SDK バージョンには影響しません)。
次に、ゲームのパッケージ名を構成します。これを行うには、[File] > [Build Settings] をクリックし、[Android] プラットフォームを選択して、[Player Settings] をクリックし、Unity の [Player Settings] ウィンドウを表示します。このウィンドウの [Other Settings] の下にある [Bundle Identifier] の設定を確認します。パッケージ名を入力します(例: com.example.my.awesome.game)。
Play ゲームサービスにログインするには、APK ファイルに署名し、正しい証明書(設定時に Play Console に入力した証明書の SHA1 フィンガープリントに対応する証明書)で署名するようにしてください。
次に、[Window] | [Google Play Games|Setup] - [Android setup] メニュー項目をクリックします。Android のセットアップ画面が表示されます。
Constants クラスの名前を入力します。これは、更新(または作成)され、ゲームリソースの ID を含む完全修飾クラスの名前です。名前の形式は <namespace>.<classname>
です。例: AwesomeGame.GPGSIds
リソース定義データを貼り付けます。これは、Android 用のリソース ID とアプリケーション ID を含む Google Play Console の XML データです。
このデータは、任意のリソースページ(実績やリーダーボードなど)で [Get resources] をクリックし、[Android] をクリックすると、Google Play Console に表示されます。
データをテキスト領域に貼り付けたら、[Setup] ボタンをクリックします。
注: ゲームでウェブ アプリケーションまたはバックエンド サーバーを使用している場合は、ウェブ アプリケーションをゲームにリンクして、プレーヤーの ID トークンまたはメールアドレスを取得できます。これを行うには、Google Play Console でウェブ アプリケーションをゲームにリンクし、セットアップ ダイアログにウェブ アプリケーションのクライアント ID を入力します。
Windows での Android 向けのビルドに関するその他の手順
Windows を使用している場合は、Java SDK のインストールに Unity からアクセス可能であることを確認する必要があります。その場合は次のようにしてください。
- JAVA_HOME 環境変数を Java SDK のインストール パス(
C:\Program Files\Java\jdk1.7.0_45
など)に設定します。 - Java SDK の
bin
フォルダをPATH
環境変数に追加します(例:C:\Program Files\Java\jdk1.7.0_45\bin
)。 - 再起動します。
環境変数を編集する方法: Windows 2000/XP/Vista/7 の場合は、[My Computer] を右クリックしてから、[Properties] を右クリックし、[Advanced System Properties] にアクセス(または [System Properties]、[Advanced] タブの順にクリック)して、[Environment Variables] をクリックします。Windows 8 の場合は、Windows Key+W キーを押して環境変数を検索します。詳細については、Windows の該当するバージョンのドキュメントをご覧ください。
プロジェクトを実行する
Smoketest サンプルを使用して作業している場合は、この時点でプロジェクトをビルドして実行できます。Smoketest が起動すると、自動ログインの試行が表示されます。
Android でビルドして実行するには、[File] > [Build Settings] をクリックして、[Android] プラットフォームを選択してから、[Switch to Platform] を選択し、[Build and Run] をクリックします。
ソーシャル プラットフォームを選択する
Google Play Games プラグインは、Unity のソーシャル インターフェースを実装しています。これにより、他のプラットフォームと統合する際に、すでにそのインターフェースを使用しているゲームとの互換性が確保されます。ただし、一部の機能は Play ゲームに固有のものであり、Unity が提供する標準のソーシャル インターフェースの拡張機能として提供されます。
標準 API 呼び出しには、ISocialPlatform インターフェースへの参照である Social.Active オブジェクトを介してアクセスできます。標準以外の Google Play Games 拡張機能にアクセスするには、Social.Active オブジェクトを追加メソッドが利用可能な PlayGamesPlatform クラスにキャストします。
デフォルトのソーシャル プラットフォームをオーバーライドせずにプラグインを使用する
PlayGamesPlatform.Activate
を呼び出すと、Google Play Games がデフォルトのソーシャル プラットフォームの実装になります。つまり、Social
と Social.Active
のメソッドへの静的な呼び出しが Google Play Games プラグインによって行われます。これは、プラグインを使用するほとんどのゲームで望ましい動作です。
ただし、なんらかの理由でデフォルトの実装にアクセスできる状態を保持する必要がある(例: 実績とリーダーボードを別のソーシャル プラットフォームに送信するために使用する)場合は、デフォルトのプラグインをオーバーライドすることなく 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 ゲームサービスへの接続が試行されます。接続に成功すると、ゲームにログイン プロンプトが表示され、Unity 用 Google Play Games プラグインを使用できるようになります。
ユーザーがデバイスで Google Play Games を一度も使用したことがない場合、ユーザーは Play Games アカウントを作成するための、1 回限りの設定画面に自動的にリダイレクトされます。
スクリプトの Start
メソッドで、自動ログインの試行結果をリッスンし、認証ステータスを取得して、ユーザーがログインしていない場合は Play ゲームサービス機能を無効にします。
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 API 呼び出しは行えません。そのため、コールバックが呼び出されるまで待機画面を表示し、認証が完了するまでユーザーがゲームを開始できないようにすることをおすすめします。
サーバー認証コードを取得する
現在のプレーヤーに代わってバックエンド ウェブサーバーで Google API にアクセスするには、クライアント アプリケーションから認証コードを取得し、取得したコードをウェブサーバー アプリケーションに渡す必要があります。その後、コードをアクセス トークンと交換することで、さまざまな API を呼び出すことができます。ワークフローの詳細については、ウェブサイト向け Google ログインをご覧ください。
サーバー側のアクセスコードを取得するには:
Play ゲーム コンソールでゲームにリンクされているウェブ アプリケーションのウェブ クライアント ID を構成します。
プレーヤーが認証されたら
PlayGamesPlatform.Instance.RequestServerSideAccess
を呼び出して、サーバー側のアクセスコードを取得します。このコードをサーバー アプリケーションに渡します。
PlayGamesPlatform.Instance.RequestServerSideAccess(
/* forceRefreshToken= */ false,
code -> {
// send code to server
});