標準イベントとカスタムイベントはいずれも、付加的な情報を Analytics に送信できます。標準イベントとカスタムイベントの違いは、大抵の標準イベントには、カスタムパラメーターに先立って、必須、または、オプションのパラメーターがあるということです。
カスタムパラメータを Dictionary<string, object>
インスタンスの形式で適切な AnalyticsEvent 関数に渡します。このディクショナリのキーはパラメーター名であり、値はパラメーター値です。このディクショナリを作成するときは、ゲームの同じバージョン内、およびバージョン間の両方で、イベントデータの各パラメーターのキーの名前とデータ型が一貫するようにします。例えば、レベル名のパラメーターをあるときは数値として渡し、あるときは文字列として渡すようなことをしないでください。このようなことをすると、データの解釈が難しくなります。
注意: カスタムパラメーターディクショナリのキーの名前をプレフィックス「unity」で始めないでください。これは、内部の Unity Analytics イベントのために予約されています。
Unity は、Analytics に送信された値をシリアライズします。ディクショナリに加えるデータ型が文字列であっても、その文字列を数値としてパースします。言い換えれば、文字列「_51_」をパラメーターのディクショナリに追加することは、数 51 を加えるのと等しいということです。
1 つのイベントで最大 10 個のパラメーターを渡すことができます。標準イベントの場合、この限度には必須パラメーターと、値を割り当てるオプションのパラメーターが含まれます (未使用のオプションのパラメーターはこの限度に含まれません)。さらに、イベントに渡されるキーの名前と文字列値の個々の長さは 100 文字を超えることはできません。また、すべてのキーの名前と文字列値の合計の長さは 500 文字を超えられません。
効率を上げるために、パラメーターのディクショナリインスタンスをクラスメンバーとして作成し、イベントを送信するときに毎回、ディクショナリを再利用することができます。ディクショナリオブジェクトを再利用すると、イベントを送信するたびにメモリの割り当てが発生するのを避けることができます。これにより、C#ガベージコレクターが処理する必要があるメモリ割り当てが減少します。シーンでイベントが発生する頻度が高いほど、このテクニックはより多くのメリットをもたらします。次の例では、カスタムイベントを送信するクラスを定義しています。 このクラスは、インスタンス変数としてパラメータディクショナリを定義し、イベントを送信するたびにパラメーター値を設定します。
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Analytics;
public class MyCustomAnalyticsEvent : MonoBehaviour {
private const string Name = "my_custom_event";
private Dictionary<string, object> parameters
= new Dictionary<string, object>();
void Start(){
// デフォルト値でパラメーターを定義します
parameters.Add("character_class", "Unknown");
parameters.Add("health", 0);
parameters.Add("xp", 0);
parameters.Add("world_x", 0);
parameters.Add("world_y", 0);
parameters.Add("world_z", 0);
}
public bool Dispatch(string characterClass,
int health,
int experience,
Vector3 location){
// 特定のイベントのためにパラメーター値を設定します
parameters["character_class"] = characterClass;
parameters["health"] = health;
parameters["xp"] = experience;
parameters["world_x"] = location.x;
parameters["world_y"] = location.y;
parameters["world_z"] = location.z;
// イベントを送信
AnalyticsResult result
= AnalyticsEvent.Custom(Name, parameters);
if(result == AnalyticsResult.Ok){
return true;
} else {
return false;
}
}
}
標準パラメーターと一緒に送信するカスタムパラメーターにも同じ方法を使用できます。
2018–03–02 公開ページ
2018–03–02 - サービスは Unity 5.2 以降でサポートされていますが、変更される可能性があります。
5.2 の新機能