LoginSignup
4
2

More than 5 years have passed since last update.

UnityのGameObjectのログを簡単に取る

Last updated at Posted at 2017-06-22

時代はデータ😤

実験やログ解析などで、プレイヤーの行動や動作のログを取りたい時がある。

時系列データを吐かせるスクリプトを作ってみた。

以下のスクリプトをプロジェクトに追加
(追記 using System.IO を忘れていました)

DataLogger.cs
using System.IO; //←add this on the top of your code!

public class DataLogger : MonoBehaviour {
    private StreamWriter sw;
    private FileInfo fi;

    private DateTime date;
    // Use this for initialization
    void Start () {
        date = DateTime.Now;
    }

    // Update is called once per frame
    void Update () {
        string str;
        string format = "yyyy-MM-dd-HH-mm-ss";
        string filename = "/data/" + date.ToString (format) + ".csv"; 
        fi = new FileInfo(Application.dataPath + filename);
        str = this.gameObject + "," + (transform.position.x) + "," +(transform.position.y) + "," + (transform.position.z)+","+ transform.rotation.x +","+ transform.rotation.y +","+ transform.rotation.z +","+ transform.rotation.w  ;
        sw = fi.AppendText();
        sw.WriteLine(str);
        sw.Flush();
        sw.Close();
    }
}

スクリプトをデータのログを取りたいGameObjectにAdd Componentすることでファイルが吐き出される。transformのパラメータを出力するようにしてある。

単一のGameObjectであれば問題ないが、複数のGameObjectごとにファイルを吐かせたい場合は、string filenameを書き換える必要がある。this.gameObjectを挟めばGameObjectの名前がついた.csvファイルが出力される。

特に最近はVRコンテンツのログによる人間行動の観察が重要そう。データ可視化とかヒートマップ的なものにも使えそう

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2