研究で、ユーザーがキーボード入力した際の誤字率と入力速度を取得したい。
OculusGoでやってもらった時、それをどうやってあとから取得出来るのかを聞くとUnityアナリティクスが使えるかもと教えていただいたので、調べました!
こちらを参考にしました。
有効にする
とりあえず有効にします。
servicesウィンドウのAnalyticsを押します。ちなみにtypingGame2Dが
そしてなんかポチポチ押していけば始まります。
サポートしているプラットフォームを見るとwebGLもAndroidもできますね。
エディタで実行したらなんかログが出ました。
dashboardに行きます。
数時間立たないと反映されないそうです。
任意の変数の結果を送る
この公式ページにスクリプトの書き方が載っていました。
カスタムイベントのスクリプティング - Unity マニュアル
using UnityEngine.Analytics; を入れる
そして
AnalyticsEvent.Custom(string customEventName, IDictionary<string, object> eventData);
customEventNameは適当に名前を付ければいいのかな?
そしてそのあとDictionalyで任意のパラメータを指定するそうです。
このdictionary型って私使ったことないのですが・・・
()の中に{}がいっぱい入ってるのたまに見る。
とりあえずコピペでまねてやったら怒られました。
ググったらusing System.Collections.Generic;を書けば治るって書いてありました。
治りました。
エディタで再生したらこんな感じで表示されて、CustomEventにもチェックが付きます。
この状態でWebGLビルドしてunityroomにアップしました
https://unityroom.com/games/typing
見る
ダッシュボードはunityのサイトからログインして、サービス
プロジェクトを選んでAnalyticsからもいけますね。
左側のData Explorerを押して
+カスタムイベントを押したらパラメーターを選択するところが出ます。
ちゃんとカスタムイベントが送られていたら、ドロップダウンで自分が設定した名前が出てきます。
私は最初うまく送れてなくて出てこなかった・・・
UniqueUsersのところにパラメーターがある。
ちゃんと取れてる!!!!!!
エラー時の嘆き
以下カスタムイベントで送る変数の名前を間違えて、stringを送ってエラーが出て、ダッシュボードに反映されてなかった時の嘆き↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
出てきません・・・
送るスクリプトですが、
公式マニュアルでは
AnalyticsEvent.Custom(string customEventName, IDictionary<string, object> eventData);
となっているのに、こちらの記事では
Analytics.CustomEvent("主人公のステータス", dictionary);
で送っています。
と思ったら私もAnalytics.CustomEventでやってた・・・
あと今気づいたけどエラー出てた。
ArgumentException: Invalid type: UnityEngine.UI.Text passed
CustomEventData.AddDictionary (IDictionary`2 eventData
ググってもわからんぞ!
あとインスペクタのCustomEventsにチェックが入っていないということは使えていないということなのかな
teratailに質問しようとして、丁寧にコードを見ていったら気づいた。変数名間違えていると。。。