TapTapTap!!!(40)~アルファ版の不具合を修正する~
TapTapTap!!!(39)~アルファ版を公開しました~ではアルファ版の公開方法とそのテスト結果をまとめた。今回はその中で出た不具合である Google Play Games にサインインできないことに対して対処を行っていく。
1.不具合の原因を想定する
不具合の修正を行う前に、まずは今回起こった不具合の原因を想定する。今回起こった Google Play Games にサインインできない問題はいくつか想定できることがあるため、想定事象を挙げていきたいと思う。
1-1.スクリプトの動作が悪いため、サインインできなくなっている
スクリプトでは開始直後、サインインだけではなくライフ管理やライフ表示処理等も同時に行っている。そのため、サインインスクリプトがうまく機能せずサインインが行っていないのではないか。Studio Fun で使用している端末でも時々サインインができなくなることがあるので、原因の最有力候補である。
1-2.Google Play Console 上での設定ミス
寸前みやこ(@SZmiyako) 様の端末では必ずサインインに失敗しているとのことなので、Google Play Console 上の設定がうまく効いていないのでは無いと思う。Studio Fun で使用している端末ではサインインができるときもあるので、Google Play Console 上での設定ミスも十分に考えられる。
2.不具合の修正を行う(スクリプト編)
現在公開しているスクリプトの流れを簡単に、説明すると以下の図の通りとなっている。
ゲーム開始と同時に Google Play Games へのサインインおよびライフ管理、ライフ表示処理を行うという流れである。これを以下の図のようにゲームの開始の後、Google Play Games サインインし、サインインに成功した後にライフの時間管理開始やライフの表示処理開始などを行う用に変更する。
スクリプトとしては以下の通り。処理の流れとしてはロゴマークの表示に合わせて、Google Play Games にサインインを行う。サインインが完了したらゲームの開始画面を表示するようにした。これをアルファ版として再公開を行い、正しい動作が行われるか確認を行う。再公開してから Google Play Games に反映されるまでに少し時間がかかるためしばらく待つ。動作が確認出来次第改めてブログで報告させていただく。
[cce_csharp]using GooglePlayGames; using GooglePlayGames.BasicApi; using System.Reflection; using UnityEngine; using UnityEngine.SceneManagement; public class GooglePlaySignIn : MonoBehaviour { /// <summary> /// ロゴマークの表示開始 /// </summary> void Start() { MyLogger.GetInstance().StartLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name); PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.DebugLogEnabled = true; // Google Play Games を有効化 PlayGamesPlatform.Activate(); SignIn(); SceneManager.LoadScene("Start"); MyLogger.GetInstance().StartLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name); } /// <summary> /// Google Play Games へのサインイン /// </summary> private void SignIn() { MyLogger.GetInstance().StartLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name); // Google Play Games へのログイン Social.localUser.Authenticate((bool success) => { if (success) { MyLogger.GetInstance().InfoLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name, "SignIn Success"); } else { MyLogger.GetInstance().InfoLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name, "SignIn Failre"); SignIn(); } }); MyLogger.GetInstance().StartLog(this.GetType().Name, MethodBase.GetCurrentMethod().Name); } }[/cce_csharp]
3.不具合の修正を行う(Google Play Console 編)
作成したゲームのテスター登録を行うためには2箇所の登録箇所があり、1つ目は[すべてのアプリ] > [アプリのリリース] の管理画面から確認を行うことができる。赤枠で囲っている部分でテスターのメールアドレスを確認することができるので、寸前みやこ(@SZmiyako) 様および自分のメールアドレスが登録されていることを確認する。
2つ目はゲームサービスからテストを行うゲームを選択し、「テスト」からテスターのメールアドレスが登録されていること、アルファ版テスターが有効になっていることを確認する。
これらが、正しく設定されていれば問題なく Google Play Games にサインインできるようになるはずだ。