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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

解決済

1回答

2558閲覧

[Unity] テキストの文字をエクセルに書き出す

Fuku78

総合スコア8

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2018/07/04 08:33

前提・実現したいこと

現在、unityにて実行後 左矢印キーを押すとテキストで何回押されたか表示されています。
(実行開始 → テキストの表示:0 → 左矢印キー一回押す → テキストの表示:1 →実行終了)

実行終了時の
テキストの内容(上記の場合 1 という数字)をエクセルに書き出したいです。
(実行開始 → テキストの表示:0 → 左矢印キー一回押す → テキストの表示:1 →実行終了 → エクセルに1という結果を書き出す)

エクセルイメージ
左回数
1
0
2 

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

該当のソースコード

C#

1矢印キーで加算のソースコード 2これにテキストの表示結果をエクセルに書き出すソースコードを付け加えて欲しいです。 3 4using System.Collections; 5using System.Collections.Generic; 6using UnityEngine; 7using UnityEngine.UI; 8using System.Collections; 9using System.IO; 10using System; 11using System.Text; 12 13public class countleft : MonoBehaviour 14{ 15 16 private Text CountTextL; 17 private int CountL; 18 private int OldCountL; 19 20 // StreamWriter swL = new StreamWriter(@"saveDataL.csv", true, Encoding.GetEncoding("Shift_JIS")); 21 22 // Use this for initialization 23 void Start() 24 { 25 CountTextL = GetComponentInChildren<Text>(); 26 OldCountL = 0; 27 CountL = 0; 28 29 30 //string[] s1 = { "左カウント" }; 31 32 } 33 34 // Update is called once per frame 35 void Update() 36 { 37 if (Input.GetKeyDown(KeyCode.LeftArrow)) 38 { 39 CountL++; 40 //Debug.Log("左矢印"); 41 if (OldCountL != CountL) 42 { 43 CountTextL.text = CountL.ToString("0"); 44 } 45 OldCountL = CountL; 46 } 47 48 //string[] strL = {""+(CountTextL.text) }; 49 //swL.Close(); 50 } 51}

試したこと

上記のコメントアウトしているところは自分なりに調べて試しましたが、saveDataL.csvは作成さてましたが中身が空っぽでした。

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

調べながら順番に理解していきましょう。

1.参考サイトを見ながら、Start()の中で書き出しが出来ることを確認する。
「unity csvファイル」などで調べれば出てきます。
UnityでCSVファイルを書き出ししたときのメモ

2.1のコードを少しずつ書き換えて、どの行が何を意味しているか理解する。
swL.WriteLine("hoge");が実際にテキストを書き込んでいるメソッドですが、コード内のどこにも存在していないので当然何も書き込まれません。
他にも必要なコードが抜けているので確認してください。

3.書き込みたい内容を確認する。
strLがそうですか? 何故string[]にしているのでしょうか? 配列を作りたいのでしょうか?
配列を作ったとしたら、どうやってそれをWriteLineに渡しますか?
やり方が分からないなら「unity 配列」で検索してみてください。

4.「上書き」はどうやるのか調べる。
上記を全て直したとしても、このままだとファイルが「作り直し」されることになり、最後の値しか保持されません。
上書きの方法も「unity csvファイル 上書き」で出て来ます。

5.全体の調整
1回キー入力後に書き込んだとしても、その後Close()してしまうと、再度ファイルを開き直さないと書き込みが出来ません。
また、左キーを連打されたらその都度ファイル書き込みが走り、負荷が高くなる可能性があります。(まぁデバッグ用なのでそれでもいいならいいんですが)

「実行終了後にエクセル書き出ししたい」らしいですが、もし「ゲーム(アプリ)の終了時」を指しているなら、そのタイミングを取得しなければいけません。
「unity 終了時」で検索してみてください(実際に何のプラットフォームで動かすかが若干影響してくるかもしれません)。


最後に以下もご覧ください。
質問するときのヒント|teratail(テラテイル)

投稿2018/07/04 12:19

sakura_hana

総合スコア11427

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問