コアイベント
カスタムイベント

標準イベント

標準イベントを使用して、5 つの主要な面でユーザー体験とプレイヤービヘイビアを追跡します。

  • Application: アプリケーションユーザーインターフェースの基本的要素の使用を追跡します。
  • Progression: アプリケーション、または、ゲーム内でのプレイヤーの進行状況を追跡します。
  • Onboarding: アプリケーション、または、ゲームを始めたときの初期のプレイヤーのインタラクションを追跡します。
  • Engagement: ソーシャル共有や達成に関連する重要な行動を追跡します。
  • Monetization: 収益関連のイベントとゲーム内の経済を追跡します。

上記の標準イベントのリストには、ゲームやアプリケーションで追跡すると役立つと考えられる一連の情報が含まれています。例えば、ほとんどのゲームにはプレイヤーの進行状況という概念があります。それは、パズルの完了、プレイしたマッチ、ロールプレイングゲームタイプの体験、またはその他の概念を意味します。標準の進行状況関連のイベントを追跡することによって、プレイヤーがどこで進行を停止するか、そして最終的にどこで完全にプレイを停止するかをよりよく理解することができます。

ほとんどの標準イベントでは、必須パラメーターとオプションのパラメーターが定義されています。オプションのパラメーターは Analytics イベントの送信時のゲームの状態に関する追加情報を提供します。また、独自のカスタムのパラメーターを定義することもできます。イベントのパラメーターを設定すると、イベントが発生した時点で収集されたデータをフィルタリングできます。標準イベントとカスタムイベントの可視化ツールは、Analytics Dashboardで表示され、データエクスプローラー、ファネル分析、セグメントビルダーが含まれています。

Unity Analytics では、受け入れる標準イベントとカスタムイベントの数を 1 人のユーザーにつき 1 時間あたり 100 に制限しています。つまり、ゲームをプレイしている 1 人のユーザーが 1 時間以内に 100 以上の標準イベントまたはカスタムイベントを発生させると、 Analytics は制限を超えた分のイベントを破棄します。

ノート: Unity 2017.3 より前の標準イベントを使用するには、Unity Event Store から Standard Events SDK をダウンロードしてインポートします。

Application イベント

Application (アプリケーション) イベントは、ゲーム以外の部分 (例えば、ステージの前後に表示されるメニューやカットシーン) でアプリケーションに対して発生するプレイヤーインタラクションを追跡します。アプリケーションに関するイベントを分析することにより、プレイヤーが、自分の予想どおり頻繁に、ユーザーインターフェースの基本部分を使用しているかどうかがわかります。

イベント名 説明
screen_visit プレイヤーが UI の画面 (設定画面、メニュー、ゲームの画面など) を開きました。
cutscene_start プレイヤーが映画的なカットシーンを見始めました。
cutscene_skip プレイヤーが映画的なカットシーンを見るのを飛ばしました。

Progression イベント

Progression (進行状態) イベントは、プレイヤーのゲーム進行状態を追跡します。ゲーム内のプレイヤーの進行をモニターするには、標準の進行関連イベントを分析します。

イベント名 説明
game_start プレイヤーが新しいゲームを開始しました (ゲーム開始と終了を明確にするために有用)。
game_over プレイヤーがゲームを終了しました (ゲーム開始と終了を明確にするために有用)。
level_start プレイヤーがステージを開始しました。
level_complete プレイヤーがステージを正常に終了しました。
level_fail プレイヤーはステージを終了できませんでした。
level_quit プレイヤーは途中でステージを終了しました。
level_skip プレイヤーがステージを飛ばしました。
level_up プレイヤーのランク、または、ロールプレイングゲームスタイルの経験レベルが上がりました。

Onboarding イベント

Onboarding (初期挙動) イベントは最初のユーザー体験 (FTUE) を追跡します。チュートリアルの有効性をモニターするには、標準の初期行動に関するイベントを分析します。

イベント名 説明
first_interaction ゲームを開いたあとに、初めてプレイヤーがインタラクションしました。
tutorial_start プレイヤーがチュートリアルを始めました。
tutorial_step プレイヤーがチュートリアルのマイルストーンをクリアしました。
tutorial_complete プレイヤーがチュートリアルを終了しました。
tutorial_skip プレイヤーがチュートリアルを飛ばしました。

Engagement イベント

Engagement (エンゲージメント) イベントは、プレイヤーがゲームに引き込まれているか、そして、プレイヤーの行動がリテンションとバイラリティとに強く関連しているかを判断する助けになります。

イベント名 説明
push_notification_enable プレイヤーがプッシュ通知を有効にしました。
push_notification_click プレイヤーがプッシュメッセージに応答しました。
chat_msg_sent プレイヤーがチャットメッセージを送信しました。
achievement_unlocked プレイヤーは 1 つの目標を達成しました。
achievement_step プレイヤーは目標へのマイルストーンを 1 つクリアしました。
user_signup プレイヤーはソーシャルネットワークと接続しました。
social_share プレイヤーは、招待やギフトのような何かをソーシャルネットワークを通して提供しました。
social_accept プレイヤーはソーシャルネットワークを通して提供された何かを受け取りました。

Monetization イベント

Monetization (収益化) イベントは収入とゲームの経済を追跡して、リソースのバランスをとり収入源を向上させる手助けになります。

イベント名 説明
store_opened プレイヤーはストアを開きました。
store_item_click プレイヤーはストアでアイテムを選択しました。
iap_transaction プレイヤーは現実世界のお金を使ってアプリ内購入を行いました。
item_acquired プレイヤーはゲーム内でリソースを取得しました。
item_spent プレイヤーはゲーム内でアイテムを使いました。
ad_offer プレイヤーは広告を見る機会がありました。
ad_start プレイヤーは広告を見始めました。
ad_complete プレイヤーは広告を見終わりました。
ad_skip プレイヤーは広告が終わる前に、広告を飛ばしました。
post_ad_action プレイヤーは広告によって勧められた行動を行いました。

標準イベントのスクリプティング

スクリプトから標準イベントを設定したい場合は、以下の名前空間を加えます。

using UnityEngine.Analytics;

注意: Unity Asset Store の Standard Events SDK を使用する場合は、名前空間に UnityEngine.Analytics.Experimental を使用してください。

これで、AnalyticsEvent クラスを使って標準イベントを設定できます。各標準イベントには対応する静的関数があります。例えば、game_start イベントを送信するには、以下の関数を呼び出します。

AnalyticsEvent.GameStart();

多くの標準イベントには必須のパラメーターがあり、オプションのパラメーターがあるものもあります。また、独自の追加パラメーターをディクショナリに追加することもできます。例えば、screen_visit イベントを使用してプレイヤーが訪問する画面を追跡するときに、さらに、どの画面から移動してきたのかも追跡したい場合は、その情報をディクショナリオブジェクトに渡すことができます。

public static void ReportScreenVisit(string screenName, string currentScreenName)
{
    AnalyticsEvent.ScreenVisit(screenName, new Dictionary<string, object>
    {
        { "from_screen", currentScreenName }
    });
}

必須のパラメーター、オプションのパラメーター (使用するものだけが数に含まれます)、および追加パラメーターの合計数は、10 以内でなければなりません。つまり、イベント関数に 2 つの必須パラメーターがあり、2 つのオプションナルパラメーターのうち 1 つを設定すると、追加のキーと値のペアを最大で 7 つ含むディクショナリを関数に渡すことができます。同じイベントでオプションのパラメーターを両方とも設定すると、辞書には 6 つのキーと値のペアしか含むことができません。

標準イベントコード例

以下のクラスは、標準の MonoBehaviour イベント関数を使用して、ステージの開始と終了に関する標準イベントを設定します。

Awake 関数は level_start イベントを設定します。例では、ステージ名、ステージインデックスの両方を使用していますが、1 つだけが必須です。例では、Scene オブジェクトから名前とインデックスを使用しますが、それ以外の値を使用することもできます。

OnDestroy 関数は、現在のステージの状態 (LevelPlayState) に基づいて level_complete、 level_fail、 level_skip、 level_quit イベントを設定します。 現在のステージの状態の値は、実際のゲームではステージ内の他のコードによって設定されます。下の例では、SetLevelPlayState() 関数を使って決定されています。この例では、 customParams というディクショナリを使って、イベントに付加的なパラメーターをいくつか加えています。

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.Analytics;

public class LevelEventManager : MonoBehaviour {
    public enum LevelPlayState {InProgress, Won, Lost, Skip, Quit}

    private Scene thisScene;
    private LevelPlayState state = LevelPlayState.InProgress;
    private int score = 0;
    private float secondsElapsed = 0;
    private int deaths = 0;

    void Awake () {
        thisScene = SceneManager.GetActiveScene();
        AnalyticsEvent.LevelStart(thisScene.name, 
                                      thisScene.buildIndex);
    }

    public void SetLevelPlayState(LevelPlayState newState){
        this.state = newState;
    }

    public void IncreaseScore(int points){
        score += points;
    }

    public void IncrementDeaths(){
        deaths++;
    }

    void Update(){
        secondsElapsed += Time.deltaTime;
    }

    void OnDestroy(){
        Dictionary<string, object> customParams = new Dictionary<string, object>();
        customParams.Add("seconds_played", secondsElapsed);
        customParams.Add("points", score);
        customParams.Add("deaths", deaths);

        switch(this.state){
        case LevelPlayState.Won:
            AnalyticsEvent.LevelComplete(thisScene.name,
                                             thisScene.buildIndex, 
                                             customParams);
            break;
        case LevelPlayState.Lost:
            AnalyticsEvent.LevelFail(thisScene.name,
                                         thisScene.buildIndex, 
                                         customParams);
            break;
        case LevelPlayState.Skip:
            AnalyticsEvent.LevelSkip(thisScene.name,
                                         thisScene.buildIndex, 
                                         customParams);
            break;
        case LevelPlayState.InProgress:
        case LevelPlayState.Quit:
        default:
            AnalyticsEvent.LevelQuit(thisScene.name,
                                         thisScene.buildIndex, 
                                         customParams);
            break;
        }
    }
}

この例では、OnDestroy() で作成されたカスタムパラメーターディクショナリのみを使用しています。 ただし、このようなディクショナリを頻繁に使用するイベントを設定する場合は、そのたびに新しいディクショナリを作成するのではなく、ディクショナリのインスタンスを 1 つ作成して再利用する必要があります。ディクショナリオブジェクトを再利用することにより、将来のフレームでガベージコレクションされるメモリ割り当てが減少します。詳細は、Analytics イベントパラメーター を参照してください。


  • 2018–03–02 編集レビュー 無しにパブリッシュされたページ

  • 2018–03–02 - サービスは Unity 5.2 以降でサポートされていますが、変更される可能性があります。

  • 5.2 の新機能

コアイベント
カスタムイベント