質問編集履歴

3 誤字修正

Leeeeeeeeon

Leeeeeeeeon score 1

2017/09/18 18:36  投稿

UnityでC#を用いてCSVに出力する方法がわかりません.
UnityでC#を用いて処理速度をCSVに出力したいです
UnityでC#を用いて処理時間を計測しCSVに出力するコードを作成しています.
処理内容は特に今はこだわっていなため
cube.transform.Rotate (new Vector3 (0, 0, 30));
でcubeを回転させ,10000万回実行したら停止するようになっています.
cubeを回転させ,10000万回実行したら停止するようになっています.
またCSVは"yyyyMMddHHmmss"でAssetsに保存されるようにしてあります.
現在処理時間の計測とCSVへの出力がともに一応はできているのですが,
CSVへの出力が1回目の処理の値しか書き出されません.
![![イメージ説明](96ee51bcf9b53079d37e5ef678339789.png)]
実現したいこととしてはコンソールに示されている(debugしている),
処理時間全てをCSVに書き出すことです.
![イメージ説明](f9d05bd5fbc044dc5904b01dc4a96c6b.png)
こちらの値をCSVに保存したいです.
```C#
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System;
public class StopWatch_test : MonoBehaviour {
   //Stopwatchのインスタンス作成
   System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); 
   private GameObject cube;
   private int i = 1;
   //書き出し準備
   StreamWriter sw;
   FileInfo fi;
       
       // Use this for initialization
   void Start () {
       cube = GameObject.Find ("Cube");
       //ファイル準備
       fi = new FileInfo(Application.dataPath + "/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv");
       sw = fi.AppendText();
   }
   // Update is called once per frame
   void Update () {
   //回数制限
       if (i > 10000) {
           return;
       }
   //計測リセット
       stopwatch.Reset ();
   //計測開始
       stopwatch.Start ();
   //計測したい処理
       cube.transform.Rotate (new Vector3 (0, 0, 30));
   //計測終了
       stopwatch.Stop ();
   //処理時間を秒で取得
   float elapsed = (float)stopwatch.Elapsed.TotalSeconds;
 //書き出す
       sw.WriteLine(stopwatch.Elapsed);
       sw.Flush();
       sw.Close();
   //Debug
   Debug.Log(stopwatch.Elapsed);
           
   i++;
   }
}
```
Stopwatch以外の処理速度測定や,
コルーチンを用いて遅延を入れてから書き出すなども試しましたが
実現には至りませんでした.
  • C#

    9447 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5810 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • CSV

    914 questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

2   

Leeeeeeeeon

Leeeeeeeeon score 1

2017/09/18 18:34  投稿

UnityでC#を用いてCSVに出力する方法がわかりません.
UnityでC#を用いて処理時間を計測しCSVに出力するコードを作成しています.
処理内容は特に今はこだわっていなため
cube.transform.Rotate (new Vector3 (0, 0, 30));
でcubeを回転させ,10000万回実行したら停止するようになっています.
またCSVは"yyyyMMddHHmmss"でAssetsに保存されるようにしてあります.
現在処理時間の計測とCSVへの出力がともに一応はできているのですが,
CSVへの出力が1回目の処理の値しか書き出されません.
![![イメージ説明](96ee51bcf9b53079d37e5ef678339789.png)]
実現したいこととしてはコンソールに示されている(debugしている),
処理時間全てをCSVに書き出すことです.
![イメージ説明](f9d05bd5fbc044dc5904b01dc4a96c6b.png)
こちらの値をCSVに保存したいです.
////////////////////
C#
////////////////////
```C#
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System;
public class StopWatch_test : MonoBehaviour {
   //Stopwatchのインスタンス作成
   System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); 
   private GameObject cube;
   private int i = 1;
   //書き出し準備
   StreamWriter sw;
   FileInfo fi;
       
       // Use this for initialization
   void Start () {
       cube = GameObject.Find ("Cube");
       //ファイル準備
       fi = new FileInfo(Application.dataPath + "/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv");
       sw = fi.AppendText();
   }
   // Update is called once per frame
   void Update () {
   //回数制限
       if (i > 10000) {
           return;
       }
      //計測リセット
   //計測リセット
       stopwatch.Reset ();
   //計測開始
       stopwatch.Start ();
   //計測したい処理
       cube.transform.Rotate (new Vector3 (0, 0, 30));
   //計測終了
       stopwatch.Stop ();
   //処理時間を秒で取得
   float elapsed = (float)stopwatch.Elapsed.TotalSeconds;
  //書き出す  
       sw.WriteLine(stopwatch.Elapsed);  
       sw.Flush();  
       sw.Close();  
   //Debug
   Debug.Log(stopwatch.Elapsed);
       //書き出す
       sw.WriteLine(stopwatch.Elapsed);
       sw.Flush();
       sw.Close();   
           
   i++;
   }
}
```
Stopwatch以外の処理速度測定や,
コルーチンを用いて遅延を入れてから書き出すなども試しましたが
実現には至りませんでした.
  • C#

    9447 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5810 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • CSV

    914 questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

1 誤字修正

Leeeeeeeeon

Leeeeeeeeon score 1

2017/09/18 18:32  投稿

UnityでC#を用いて測定したプログラム内の処理速度をCSVに出力する方法がわかりません.
UnityでC#を用いてCSVに出力する方法がわかりません.
###ここに質問したいことを詳細に書いてください  
UnityでC#を用いて処理時間を計測しCSVに出力するコードを作成しています.
処理内容は特に今はこだわっていなため
cube.transform.Rotate (new Vector3 (0, 0, 30));
でcubeを回転させ,10000万回実行したら停止するようになっています.
またCSVは"yyyyMMddHHmmss"でAssetsに保存されるようにしてあります.
###発生している問題・エラーメッセージ
現在処理時間の計測とCSVへの出力がともに一応はできているのですが,
CSVへの出力が1回目の処理の値しか書き出されません.
![![イメージ説明](96ee51bcf9b53079d37e5ef678339789.png)]
実現したいこととしてはコンソールに示されている(debugしている),
処理時間全てをCSVに書き出すことです.
![イメージ説明](f9d05bd5fbc044dc5904b01dc4a96c6b.png)
こちらの値をCSVに保存したいです.
###該当のソースコード
////////////////////
C#
////////////////////
using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using System;
public class StopWatch_test : MonoBehaviour {
   //Stopwatchのインスタンス作成
   System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); 
   private GameObject cube;
   private int i = 1;
   //書き出し準備
   StreamWriter sw;
   FileInfo fi;
       
       // Use this for initialization
   void Start () {
       cube = GameObject.Find ("Cube");
       //ファイル準備
       fi = new FileInfo(Application.dataPath + "/" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".csv");
       sw = fi.AppendText();
   }
   // Update is called once per frame
   void Update () {
   //回数制限
       if (i > 10000) {
           return;
       }
       //計測リセット
       stopwatch.Reset ();
   //計測開始
       stopwatch.Start ();
   //計測したい処理
       cube.transform.Rotate (new Vector3 (0, 0, 30));
   //計測終了
       stopwatch.Stop ();
   //処理時間を秒で取得
   float elapsed = (float)stopwatch.Elapsed.TotalSeconds;
   //Debug
   Debug.Log(stopwatch.Elapsed);
       //書き出す
       sw.WriteLine(stopwatch.Elapsed);
       sw.Flush();
       sw.Close();   
   i++;
   }
}
###試したこと
Stopwatch以外の処理速度測定や,
コルーチンを用いて遅延を入れてから書き出すなども試しましたが
実現には至りませんでした.
  • C#

    9447 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    5810 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • CSV

    914 questions

    CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る