見出し画像

C#初心者がUnityでStreamWriterでうまく入力できなかったことの改善法

 この度,UnityでPlay中に出た結果をcsvで出力したいと思いC#のStreamWriterを用いて出力しようとしたところ躓いたところがあったので記録しておきます.

目的

 今回の目的は,UnityでCSV出力をすることです.動作の目標としては,Inputがあったらそれに応じた結果を出力するまでを作成します.

手段

 C#のsystem.IOネームスペースのStreamクラスにあるStreamWriterを用いてcsvファイルの作成,入力,保存までを行います.

ちなみに,StreamWriter(String , Bool , Encoding)で書いてます.

問題発生

 以下のようにスクリプトを作成したところcsvファイルが作成されるのですが,肝心の入力内容が反映されませんでした.Debug.Logで確認したところ,実行はされているみたいなので何が違うのでしょう.

using System.IO;
using System.Text;

public class CSVoutput1 : MonoBehaviour
{
   [SerializeField]
   string path;

   string filepath;

   void Start()
   {
       filepath = path + @"\test.csv";
   }

   void Update()
   {
       using (StreamWriter sw = new StreamWriter(filepath, true, Encoding.GetEncoding("shift_jis")))
       {
           if (Input.GetKeyDown(KeyCode.Y))
           {
              sw.WriteLine("test");
           }
       }
   }
}

画像2


解決方法

 なんと,StreamWriterの一連動作をif文の中に入れることで解決しました.usingの中にif文が入るとうまく動作しないみたいです.自分はC#に詳しくないのでだれかなぜなのか分かったら教えてほしいです.

using System.IO;
using System.Text;

public class CSVoutput : MonoBehaviour
{
   [SerializeField]
   string path;

   string filepath;

   void Start()
   {
       filepath = path + @"\test.csv";
   }

   void Update()
   {
       if (Input.GetKeyDown(KeyCode.Y))
       {
           using (StreamWriter sw = new StreamWriter(filepath, true, Encoding.GetEncoding("shift_jis")))
           {
               sw.WriteLine("test");
           }
       }
   }
}

画像1


いいなと思ったら応援しよう!