質問: ●困っていること スクロールアクションゲームを作ってます。敵の出現順、ステータス、配置などをCSVファイルに記述し、それをプログラムで読みこむことで、敵を出しています。 しかし、このCSVファイルが非常に扱いにくい。 >なぜ扱いにくいか そのCSVファイルを、excelなどのCSV編集アプリで編集した時、その編集アプリを開いている状態で、Unityを動かすとUnityでエラーが出てしまう。 これは編集アプリがそのCSVファイルを排他ロックしてるのに、Unityで読み込もうとするからのようです(このサイトで教えていただきました)。 とは言っても、毎回編集アプリを終了させるのはとても大変なので、排他ロックを行わないアプリが欲しかった。 そこで排他ロックを行わない、Cassavaというアプリを使うと、うまく行きました(このアプリも、このサイトで教えていただきました)。 しかし、このCassavaというアプリ、はあまりに古いソフトなため、コピーアンドペーストができない、など非常に使いにくく、扱う情報が増えてきた現在、非常に使うのがきつくなってきました。 ※ちなみに、CSVファイルに記述しようとしたのは、CSVだとエクセルのようなアプリを使って、マス目上にデータを入力できるのが極めて便利だったからです。 以下のような、ただ数字が並ぶ状態で編集するのはキツいのです。 52,3,666 0,708888,8 ちなみに、他に、試したけど、使いにくい、排他ロックがかかるなどの理由で駄目だったアプリは以下です。 エクセル、VSコード、LibroOffice、EMEditor ●実現したいこと マス目上で編集できるCSV編集アプリで、かつ編集したCSVファイルを、「セーブし、かつ、その編集アプリを起動したまま」、Unityを作動させてもエラーが出ないアプリを知りたい。 >上記が無理な場合 CSV以外の方法でやるべきなのか? もしくは、根本的に、他に、うまい敵のデータ管理方法がないか のアドバイスがほしいです。 ●その他補足 扱いたいのは、敵の種類、ステータス、出現順などです。
回答: ファイルの読み込みをロックが掛かっていたとしても読み込めるようにすればいいと思います ``` using (FileStream fs = new FileStream(@"test.csv", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var s = new StreamReader(fs)) { while (!s.EndOfStream) { Debug.Log(s.ReadLine()); } } } ``` 追記 フォルダの同期ソフトを使い、\work\test.csvを更新したら、Asset\Resource\ と同期させて、 編集しているファイルとUnityで読み込むファイルを分けるという方法もあります ただ、具体的などういうソフトがいいのかは私は知らないので、 自分で探すか、まとめて別の質問で書き込めば誰かが答えてくれるかもしれません