【Unity】Google Game Serviceの導入方法【Android/iOS】
GoogleGameServiceの導入でハマったポイントがあったので備忘録も兼ねて導入方法を解説していきたいと思います。
※Google Developer Consoleにて一通りの設定が済んでいる前提で進めていきます。
導入環境
・Unity5.3.2f1
・xcode7.3
この記事を書いて一年以上経過しているので導入方法が変わっている可能性があります。
こちらにアクセスしてzipをDLします。
DLが完了したら解凍しておいてください。
Unityを立ち上げプロジェクトを開き
Assets -> ImportPackage -> CustomPackage...を選択します
先ほど解凍したフォルダの中にcurrent-buildフォルダがあるのでその中のUnityPackageをImportします。
※過去のバージョンを使いたい場合はold-buildフォルダにUnityPackageがあります。
ここからAndroidとiOSで方法が異なってくるので解説を分けます
Androidの場合
Importが完了したら
Window -> Google play Service -> Downloads -> Google Game Services SDKを選択します
AndroidSDK Managerが起動するのでチェックが入っているものをDLします。
DLが完了したらUnityに戻り
Window -> Google Play Service -> Setup -> Android Setupを選択します。
Constans Class nameは適当な名前でいいと思います。(自分はleaderboardにしています)
次にGoogle Developer Consoleにアクセスしてゲームサービス>追加したゲームを選択します。
実績やリーダーボードを選択してIDの下のほうにあるリソースを取得を選択してAndroidタブのコードをコピーします
Unityに戻りコピーしたコードをResourceDifinitionに貼り付けます。
Setupボタンをクリックして設定完了です。
あとはスクリプトにログイン処理を記述すれば利用できるようになります。
Androidは特に問題なく導入できるかと思います。
iOSの場合
さて、筆者が一番ハマったiOSでございます。
Unityでの設定はAndroidとさほど変わりませんが一応書いておきます。
Window -> Setup -> iOS setupを選択します。
Constans Class nameに適当な名前を入れます
Google Developer Consoleにアクセスしてゲームサービス>追加したゲームを選択します。
リソースを取得をクリックしObjective-Cタブのコードをコピーします。
Unityに戻ってResourceDifinitionにコピーしたコードを貼り付けます。
ログイン処理などを書けば利用できるようになります。
次にxcodeでビルドするためにUnityで書き出してください。
※CocoaPodsを使いますのでインストールしておいてください。
インストールの方法が分からない場合はGoogle大先生に聞いていただければヒットすると思いますので頑張ってください(他人任せ)
Unityでビルドが完了したらターミナルを起動してxcodeのプロジェクトフォルダに移動します。
$ pod installを実行して必要なライブラリをインストールします。
※筆者は不安なので $ pod updateも実行しています。
このままBuildSettingsなどで一通り設定して実行すると筆者の環境だと
GIDSignIn.h file not found.
というエラーがでてビルドできませんでした。
このファイル自体は存在しているのに・・・謎です。
解決方法
一度プロジェクトを閉じてください。
https://developers.google.com/identity/sign-in/ios/sdk/
1.こちらからGoogle Sign-InSDKをダウロードして展開します。
2.GoogleSignIn.frameworkとGoogleSignIn.bundleをプロジェクトフォルダに追加します。
3.xcodeでプロジェクトを開き、General->Linked frameworkの+ボタンをクリックして左下にあるAdd Anotherをクリックします。先ほどプロジェクトフォルダにコピーしたGoogleSignIn.frameworkを選択して追加します。
4.Build Settings -> Build optionのEnable BitcodeをNoに変更します。
5.Build Settings -> LinkingのOther Linker Flagsに$(inherited)を追加します。
6.Build Phases -> Copy Bundle Resourcesの+ボタンをクリックしAdd Anotherをクリックします。プロジェクトフォルダに追加したGoogleSignIn.bundleを選択してください。するとダイアログが開きますのでCopy items if neededにチェックを入れてファイルを追加します。
7.エラー文をクリックして該当箇所を以下のように修正します
#import <GoogleSignIn/GIDSignIn.h>
#import <GoogleSignIn/GIDGoogleUser.h>
#import <GoogleSignIn/GIDAuthentication.h>
#import <GoogleSignIn/GIDProfileData.h>
修正したら忘れずに保存してください。
これで一度ビルドしてみましょう。
"clang: error: linker command failed with exit code 1 (use -v to see invocation)"
このようなエラーでビルドできないはずです。
※追記※
ビルドエラーにならない場合があるようです。エラーにならなければファイルはそのままでOKです。
これを修正するためにGeneral->Linked frameworkの3.で追加したGoogleSignIn.frameworkを削除します。
もう一度ビルドする不思議なことにビルドが通ります。
確認して問題なければ終了です。お疲れ様でした。
※Unityもxcodeも初心者なので間違っているところがあるかも知れません。
ご指摘いただければ修正しますのでよろしくお願いします。