トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

Unityアナリティクスのカスタムイベントを試す

研究で、ユーザーがキーボード入力した際の誤字率と入力速度を取得したい。

OculusGoでやってもらった時、それをどうやってあとから取得出来るのかを聞くとUnityアナリティクスが使えるかもと教えていただいたので、調べました!

こちらを参考にしました。

tsubakit1.hateblo.jp

kan-kikuchi.hatenablog.com

有効にする

とりあえず有効にします。

servicesウィンドウのAnalyticsを押します。ちなみにtypingGame2Dが

f:id:bibinbaleo:20180910203818p:plain

そしてなんかポチポチ押していけば始まります。

f:id:bibinbaleo:20180910203610p:plain

サポートしているプラットフォームを見るとwebGLAndroidもできますね。

エディタで実行したらなんかログが出ました。

f:id:bibinbaleo:20180910212436p:plain

dashboardに行きます。

f:id:bibinbaleo:20180910203821p:plain

数時間立たないと反映されないそうです。

f:id:bibinbaleo:20180910213146p:plain

任意の変数の結果を送る

qiita.com

unity3d.com

この公式ページにスクリプトの書き方が載っていました。

カスタムイベントのスクリプティング - Unity マニュアル

 

using UnityEngine.Analytics; を入れる

そして

AnalyticsEvent.Custom(string customEventName, IDictionary<string, object> eventData);

 customEventNameは適当に名前を付ければいいのかな?

そしてそのあとDictionalyで任意のパラメータを指定するそうです。

f:id:bibinbaleo:20180910210641p:plain

このdictionary型って私使ったことないのですが・・・

()の中に{}がいっぱい入ってるのたまに見る。

とりあえずコピペでまねてやったら怒られました。

f:id:bibinbaleo:20180910210835p:plain

f:id:bibinbaleo:20180910211029p:plain

ググったらusing System.Collections.Generic;を書けば治るって書いてありました。

コンパイラ エラー CS0308

治りました。

 

エディタで再生したらこんな感じで表示されて、CustomEventにもチェックが付きます。

f:id:bibinbaleo:20180916172400p:plain

この状態でWebGLビルドしてunityroomにアップしました

https://unityroom.com/games/typing

見る

ダッシュボードはunityのサイトからログインして、サービス

f:id:bibinbaleo:20180912160222p:plain

プロジェクトを選んでAnalyticsからもいけますね。

 

左側のData Explorerを押して

+カスタムイベントを押したらパラメーターを選択するところが出ます。

f:id:bibinbaleo:20180918162710p:plain

ちゃんとカスタムイベントが送られていたら、ドロップダウンで自分が設定した名前が出てきます。

私は最初うまく送れてなくて出てこなかった・・・

UniqueUsersのところにパラメーターがある。

f:id:bibinbaleo:20180918162557p:plain

ちゃんと取れてる!!!!!!

f:id:bibinbaleo:20180918162641p:plain

 

エラー時の嘆き

以下カスタムイベントで送る変数の名前を間違えて、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

f:id:bibinbaleo:20180914161905p:plain

ググってもわからんぞ!

 

あとインスペクタのCustomEventsにチェックが入っていないということは使えていないということなのかな

f:id:bibinbaleo:20180914162521p:plain

teratailに質問しようとして、丁寧にコードを見ていったら気づいた。変数名間違えていると。。。

f:id:bibinbaleo:20180916172413p:plain

 

f:id:bibinbaleo:20180916172411p:plain