PR

【Unity】Firebaseを入れて分析してみよう!その3 実践編

Unity

プログラムを解説

 

シングルトン処理

    // シングルトン処理
    private static AnalyticsManager instance;
    public static AnalyticsManager Instance
    {
        get{
            if (instance == null) {
                Type t = typeof(AnalyticsManager);

                instance = (AnalyticsManager)FindObjectOfType (t);
                if (instance == null) {
                    Debug.LogError (t + " をアタッチしているGameObjectはありません");
                }
            }
            return instance;
        }
    }

こちらのシングルトンというのはデザインパターンの一種で
簡単にこのクラスにアクセスするためによく使われる手法です。

アクセスは「AnalyticsManager.Instance」で出来てしまうので非常に便利です。
このスクリプトをアタッチしたオブジェクトを最初のシーンに置いておくだけで
どのスクリプトからもアクセス出来てしまいます。とても便利。

 

クエスト終了タイプ

    // クエスト終了タイプ
    public enum QuestEndType
    {
        Clear,
        GameOver,
        MenuQuit,
        AppQuit,
    }

このゲームではクエストが終わった時の状態が4種(クリア、ゲームオーバー、メニューからの中断、アプリ自体の終了)あるのでその分タイプの定義を用意しています。

 

各種イベント名の定義

    // イベント:クエストクリアをシェアしたか
    const string EVENT_SHARE_QUEST_CLEAR = "share_quest_clear";

    // イベント:クエスト開始&終了
    const string EVENT_QUEST_START = "quest_start";
    const string EVENT_QUEST_END = "quest_end";

    // イベント:広告リワードを取得したか
    const string EVENT_AD_REWARD_GET    = "ad_reward_get";

    // イベント:広告リワードをキャンセルしたか
    const string EVENT_AD_REWARD_CANCEL = "ad_reward_cancel";

イベントとは簡単に言うとユーザーの行動の種類のことです。
例えば「広告を見た」、「ゲームをクリアした」などが欲しい場合は
そのゲーム上のタイミングでログを送信する処理を行う必要があります。

このゲームでは下記5種類用意しています。

  • クエストクリアをシェアしたか
  • クエスト開始
  • クエスト終了
  • 広告リワードを取得したか
  • 広告リワードをキャンセルしたか

 

パラメータ名の定義

    // パラメータ:
    const string PARAM_QUEST_NAME = "name";
    const string PARAM_QUEST_END_TYPE = "end_type";
    const string PARAM_QUEST_ELAPSED_TIME_SEC = "elapsed_time_sec";

これは先程紹介したイベントにもっと詳細な情報を持たせる場合に用意します。
では各パラメータを説明していきましょう。

 

PARAM_QUEST_NAME

クエストを開始 or 終了した時に利用します。
どの依頼がよく遊ばれているかがわかるようになります。

 

PARAM_QUEST_END_TYPE

さきほど説明したクエスト終了タイプ「QuestEndType」と併せてクエスト終了時に利用します。
どのように依頼を終了したかが記録されるのでクリアやゲームオーバーの比率を知ることができ、難易度の調整などに役立ちます。

 

PARAM_QUEST_ELAPSED_TIME_SEC

クエストのプレイ時間の計測に利用します。
クエストをクリアするのにどの程度時間使っているか知ることができます。

 

 

クエスト終了タイプ

Firebaseは当然ネットワークを利用しているので機内モードになっている時などは機能できません。そのような時に「IsValid」などを用いて処理をしないようにしています。

// 正常に初期化できたか
    bool m_valid = false;
    bool IsValid{ get{ return m_valid; }}
    bool IsInvalid{ get{ return !m_valid; }}

 

コメント

スポンサーリンク
タイトルとURLをコピーしました