質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

1677閲覧

unityでリアルタイムにcsvの書き込み、更新をしたい

gratan

総合スコア6

CSV

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

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2019/10/03 01:20

編集2019/10/03 01:35

前提・実現したいこと

unityで自分で譜面を作成、およびプレイができる音ゲーを作ろうとしています。
構成としては、まず音楽に合わせてノーツを落としたいタイミング、位置でシーン上のパネルをタップ。それらの情報をResourcesファイルのなかにcsvファイルとして作成。譜面の作成が終わったらゲームシーンへと移り、先ほどのcsvファイルを読み込み譜面をプレイ、という流れになっています。

しかし、ゲームシーンに移った際にcsvファイルが存在しないということでエラーが出てしまいます。
そこで、実行中にcsvファイルのリアルタイムでの作成や更新はできるのでしょうか?
また、できるとしたらその方法などを教えていただけると幸いです。

初質問で至らない点もあると思いますが、ご教授お願いします。

補足)
・csvファイルは新規作成する形を取っています。
・ゲームシーンでのファイルの読み込みはStartのなかで行っています。
・テキストエディタを更新するとcsvファイルの作成、更新がされエラーは出なくなります。しかし、反対にそれをしないといくら待っても作成、更新がされません。これで困っています。
・実行終了後に確認すると、csvへの書き込み自体は問題なくできています。

発生している問題・エラーメッセージ

NullReferenceException: Object reference not set to an instance of an object

該当のソースコード

試したこと

最初に空のcsvファイルを作成しておき、そこに書き込んでいくというのも試しました。エラーは出なくなりましたが、書き込みの更新ができていないのでゲームシーンでは何も起こらず、根本の解決ができていないという結果でした。

「unity csv」 に続けて"出力"や"更新"、"読み込み"などのワードを合わせて検索して見ましたが、うまく望んだ結果が見つかりませんでした。詳しく乗っているサイトなど教えていただけると幸いです。

補足情報(FW/ツールのバージョンなど)

C#、unity2018、Mac、visual studio code

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

そもそもResourcesフォルダの中身の更新はエディタ上でしか行えません。
もしResources.Loadを使っているなら、実機ビルド上では動作しません(ビルド時点でResourcesフォルダ内にあるファイルしか読み込めません)。
実機上でも使用したいならFile.IO等による読み書きが必要です。


■補足情報
エディタ上でも何故正常に動作しないかというと、これがUnityの仕様だからです。

Resources.Loadで読み取られるのは「Unityプロジェクト内にあるファイル」の中身です。(プロジェクトファイルがあるフォルダの中のファイルの中身ではない)
では、プロジェクト内にあるファイルがいつ更新されるかというと、「ゲームプレイが開始・終了する」「Unity(エディタ)から別のソフトにアクティブが移り、その後またUnityにアクティブが戻って来たタイミング」などです。(補足の3番目の挙動の理由がこれ)

エディタスクリプトなどを利用すれば任意のタイミングでファイル更新が出来るかもしれませんが詳しく調べていないので必要なら探してみてください。
(なお、エディタスクリプトは実機上では動作しません。「Resourcesフォルダの中身の更新はエディタ上でしか行えない」の原則は変わらないので、あくまで「違う要件なら使えるかもね」という補足情報になります)

投稿2019/10/03 02:25

編集2019/10/04 07:46
sakura_hana

総合スコア11425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sakura_hana

2019/10/03 02:27

大分憶測で回答してしまいましたが、もしも「Resources.Load使ってないのに……」ということなら、単純にスクリプトにミスがあるだけかもしれないのでエラーが発生している付近のコードを質問に追記してください。
gratan

2019/10/04 07:34

Resources.Loadで読み込んじゃってます… エディタスクリプトなど調べて見て今一度実装方法考え直して見ます! ご丁寧にありがとうございました!
sakura_hana

2019/10/04 07:41

すみません、誤解を招きそうでしたので一応補足を。 エディタスクリプトを使ってファイル更新が出来たとしても、それはエディタ上でしか動作しないので、実機でも同様のことをしたい場合はResourcesは使用出来ません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問