標準イベントとカスタムイベントはいずれも、付加的な情報を 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 の新機能
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.