FreelyApps

個人によるアプリ開発の日記です。アプリの収入だけで生活できるようになるのが目標です。UnityでAndroid向けのゲームアプリを作成しています。


    ブログを
    https://freelyapps.net/
    に移転する予定です。
    リンク切れがある記事はこちらに移動した可能性もあります。

    カテゴリ:Unity > Unity Analytics

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unity5.4以前ではAnalyticsのメソッドには以下の
    public static AnalyticsResult CustomEvent(string customEventName, IDictionary<string, object> eventData);
    という形式でカスタムイベントが発生したことを伝えていました。
    この形式しかなかったので、カスタムイベントに付随するパラメータがない場合は、eventDataにnullを渡し
    Analytics.CustomEvent("something" , null);
    というようにしていました。
    見た目からしてもnullを置くのは変な感じですが、これでうまくいっていたのです。 

    Unity5.4.0f3にしたところ、パラメータなしのカスタムイベントでエラーが発生しました。(NullReferenceExceptionが発生するので、とても危険です。Unityはこのエラーが発生しても落ちないのですが、ふつうは落ちます。なぜか処理が一部飛ばされて動き続けるようです。)
    ce_nre


    5.4では、Analyticsクラスに以下の2つのカスタムイベント用のメソッドが追加されています。
    public static AnalyticsResult CustomEvent(string customEventName); 
    public static AnalyticsResult CustomEvent(string customEventName, Vector3 position); 
    パラメータなしのカスタムイベントは上の引数が1つだけのものを呼び出すとエラーがなくなりました。おそらくこの対応で問題ないと思います。
    下の位置を渡すものはヒートマップに使うと思われます。 

      このエントリーをはてなブックマークに追加 Clip to Evernote
    Unity Analyticsのカスタムイベントにはパラメータをつけることができます。Custom Eventについてでも書きましたが、Analytics.CustomEventの第2引数にパラメータをIDictionary<string,object>として渡します。パラメータの名前と値をセットにした配列を渡すだけなので、使い方を覚えれば簡単です。

    こんな感じに使います。実際のアプリで使っているコードを撮ったので、VariableManagerだのrefResultDataだのがありますが、気にしないで良いです。名前と値がセットになって並んでいるということが重要です。
    ts-old-analytics

    このカスタムイベントの情報を集めると、管理サイトでは以下のようにパラメータの一覧が見れます。上の2つはデフォルトで存在するもので、timeから下がスクリプトで書いたパラメータになります。(大文字小文字の区別はなくなるので、アンダーバーを使って名前を見やすくするのがコツらしいです。)
    ts-params

    levelパラメータは数字を区別したいため、文字列化(数字が頭につくと数字と解釈されているらしい。)して送っています。ゲームの難易度ごとでユーザーがどれくらい遊んでいるかを知ることができます。
    ts-level

    resultパラメータはユーザーの勝敗です。どれくらい勝ったり負けたりしているかわかれば、強すぎたり弱すぎたりするのを改善できます。
    ts-result

    これらの情報は非常に有用なのですが、実は失敗したことがあります。
    ある難易度を選んだユーザーの結果がどうなったのかということを知ることができないのです。Level1を遊んだ人がどれくらい勝ったのか負けたのかはわかりません。

    あるカスタムイベントに付属するパラメータのそれぞれは独立して記録されているため、組み合わせた分析ができないのです。上で言うと、levelがいくつでresultが何々のユーザーのグラフを表示することができないです。(いずれできて欲しいところです。)

    現状ではいくつかのパラメータを組み合わせた分析は以下のようにstringに情報を含めることになるでしょう。組み合わせにより、stringの種類が莫大になりやすいのでそこに注意する必要があります。
    ts-new-analytics

    Summaryという新しい項目に難易度とレベルと結果をすべて含めました。難易度の数、レベルの数、結果の種類の掛け合わせ分でも100いかない位だったので、とりあえずこのようにしました。Summaryという新しいパラメータ名にしたのは、過去のデータと区別するためです。

      このエントリーをはてなブックマークに追加 Clip to Evernote
    正確なことはわかりませんが、おそらくは4月中旬くらいにUnityAnalyticsの管理サイトが更新されました。(UNITEの後で変わったのではないかと思います。UNITEで新機能など発表→いろいろ更新という流れ。)

    EVENT MANAGERという項目が以前と大分変わりました。それ以外は見た目が少し変わっていますが、機能的には大きくは変わってないと思います。以前の記事のスクリーンショットを見たら、EVENT WATCHERというものだったようです。名前も変わっているようです。

    EVENT MANAGERはこんな感じです。
     analytics-em-ts

    カスタムイベントのポイントの上限が1000から5000へと増えました。多くなったことでよりたくさんのカスタムイベントを作っても記録されるようになり、色々解析できるようになります。普通に使う分では1000でも多いので、増やす必要があるのかと思います。
    しかし、今後ヒートマップという新機能が作られるのでそのためなのかもしれません。これがどれくらいポイントを消費するの不明であり多くのポイントを消費しそうなのです。(位置情報を文字列にして、これをパラメータとして持つカスタムイベントを作れば現時点でもヒートマップに似たようなものを実装できます。位置情報の空間分解能によりますが、1mの立方体で10mの立方体の空間を覆うなら1000個の区別がされます。これだとポイントの消費が大きすぎて実用的ではないです。)

    カスタムイベントの消費ポイントが以前と異なるようです。
    以前は0か1個のパラメータを持つ場合の消費ポイントは1でした。今回からはカスタムイベント1つにつきまず1消費します。そしてパラメータごとに1ずつ消費ポイントが増えていくようです。文字列の場合は送る取りうる値の数だけポイントを消費することは以前と変わらないようです。
    消費するポイントは、カスタムイベントの分1と取りうる値の数分(数値のみパラメータの個数分)です。

    analytics-em-ts-custom
    EVENT MANAGERではカスタムイベントごとにどのようにポイントを消費しているか見れます。これで簡単に内訳が分かるようになりました。(やったね!超便利。) 
    またカスタムイベントの有効、無効が選択できるようになります。新しい実行ファイルでは使わなくなったカスタムイベントがある場合などはDisabledにするとよいでしょう。無効化してあるとポイントの消費が0になりますが、データの参照などそのカスタムイベントはアナリティクスでは全く使えなくなります。
    Disabledにしても後でEnabledにして復活することはできます。無効にしていた間のデータは存在しませんが、Enabledにしたときから集計が行われます。

     

    このページのトップヘ