標準イベントを使用して、5 つの主要な面でユーザー体験とプレイヤービヘイビアを追跡します。
上記の標準イベントのリストには、ゲームやアプリケーションで追跡すると役立つと考えられる一連の情報が含まれています。例えば、ほとんどのゲームにはプレイヤーの進行状況という概念があります。それは、パズルの完了、プレイしたマッチ、ロールプレイングゲームタイプの体験、またはその他の概念を意味します。標準の進行状況関連のイベントを追跡することによって、プレイヤーがどこで進行を停止するか、そして最終的にどこで完全にプレイを停止するかをよりよく理解することができます。
ほとんどの標準イベントでは、必須パラメーターとオプションのパラメーターが定義されています。オプションのパラメーターは Analytics イベントの送信時のゲームの状態に関する追加情報を提供します。また、独自のカスタムのパラメーターを定義することもできます。イベントのパラメーターを設定すると、イベントが発生した時点で収集されたデータをフィルタリングできます。標準イベントとカスタムイベントの可視化ツールは、Analytics Dashboardで表示され、データエクスプローラー、ファネル分析、セグメントビルダーが含まれています。
Unity Analytics では、受け入れる標準イベントとカスタムイベントの数を 1 人のユーザーにつき 1 時間あたり 100 に制限しています。つまり、ゲームをプレイしている 1 人のユーザーが 1 時間以内に 100 以上の標準イベントまたはカスタムイベントを発生させると、 Analytics は制限を超えた分のイベントを破棄します。
ノート: Unity 2017.3 より前の標準イベントを使用するには、Unity Event Store から Standard Events SDK をダウンロードしてインポートします。
Application (アプリケーション) イベントは、ゲーム以外の部分 (例えば、ステージの前後に表示されるメニューやカットシーン) でアプリケーションに対して発生するプレイヤーインタラクションを追跡します。アプリケーションに関するイベントを分析することにより、プレイヤーが、自分の予想どおり頻繁に、ユーザーインターフェースの基本部分を使用しているかどうかがわかります。
イベント名 | 説明 |
---|---|
screen_visit | プレイヤーが UI の画面 (設定画面、メニュー、ゲームの画面など) を開きました。 |
cutscene_start | プレイヤーが映画的なカットシーンを見始めました。 |
cutscene_skip | プレイヤーが映画的なカットシーンを見るのを飛ばしました。 |
Progression (進行状態) イベントは、プレイヤーのゲーム進行状態を追跡します。ゲーム内のプレイヤーの進行をモニターするには、標準の進行関連イベントを分析します。
イベント名 | 説明 |
---|---|
game_start | プレイヤーが新しいゲームを開始しました (ゲーム開始と終了を明確にするために有用)。 |
game_over | プレイヤーがゲームを終了しました (ゲーム開始と終了を明確にするために有用)。 |
level_start | プレイヤーがステージを開始しました。 |
level_complete | プレイヤーがステージを正常に終了しました。 |
level_fail | プレイヤーはステージを終了できませんでした。 |
level_quit | プレイヤーは途中でステージを終了しました。 |
level_skip | プレイヤーがステージを飛ばしました。 |
level_up | プレイヤーのランク、または、ロールプレイングゲームスタイルの経験レベルが上がりました。 |
Onboarding (初期挙動) イベントは最初のユーザー体験 (FTUE) を追跡します。チュートリアルの有効性をモニターするには、標準の初期行動に関するイベントを分析します。
イベント名 | 説明 |
---|---|
first_interaction | ゲームを開いたあとに、初めてプレイヤーがインタラクションしました。 |
tutorial_start | プレイヤーがチュートリアルを始めました。 |
tutorial_step | プレイヤーがチュートリアルのマイルストーンをクリアしました。 |
tutorial_complete | プレイヤーがチュートリアルを終了しました。 |
tutorial_skip | プレイヤーがチュートリアルを飛ばしました。 |
Engagement (エンゲージメント) イベントは、プレイヤーがゲームに引き込まれているか、そして、プレイヤーの行動がリテンションとバイラリティとに強く関連しているかを判断する助けになります。
イベント名 | 説明 |
---|---|
push_notification_enable | プレイヤーがプッシュ通知を有効にしました。 |
push_notification_click | プレイヤーがプッシュメッセージに応答しました。 |
chat_msg_sent | プレイヤーがチャットメッセージを送信しました。 |
achievement_unlocked | プレイヤーは 1 つの目標を達成しました。 |
achievement_step | プレイヤーは目標へのマイルストーンを 1 つクリアしました。 |
user_signup | プレイヤーはソーシャルネットワークと接続しました。 |
social_share | プレイヤーは、招待やギフトのような何かをソーシャルネットワークを通して提供しました。 |
social_accept | プレイヤーはソーシャルネットワークを通して提供された何かを受け取りました。 |
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 の新機能