CSV読むのは簡単だった

いつもながらハマるけど。何にハマったのかというと、今回は宣言。

◆記事:UnityでCSVを読み込むときの軽いメモ
◆サイトリンク:http://qiita.com/tt-coder/items/68e81a64664b769f3755

言われた通りにやればできました。
ソースは全くいじっていない。宣言が必要でしたね。

初っ端にこれを宣言する。

なんでこれがわかったのかというと、エラーが教えてくれました。
エラーの内容でググれば出てきた(外国のサイトが)。

using System.IO;

Unityでアプリ開発の良さって、情報が溢れていることね。

初心者でもちょっとの山(うまくいかないときのあの山)を越えれば、すんなりできると思います。
私ができているからにはできるんじゃないかな。

C#とか、大学以来やるけどなんだかんだいけますね。

今やっているのは、これを読み込んで会話シーンを作ることですが、忘れそうだったのでメモメモ。

iTweenで表現する方法でやっている

昨日の、シナリオ書き出しをCSVからとって表示する方法にしました。

Unity ノベルゲームのようなものを作ってみる

結果はこの通り。上がCSV読み取り。下が素敵なブロガーさんのそのままのソース。

もともソースからの修正箇所はほぼない

CSV読み込みソースも、テキスト表示ソースも-ほぼ-そのまま。

やったといえば、publicでシナリオを書き込むんじゃ無くしただけ。
scenariosの情報をスクリプトで設定するようにしただけ。

[SerializeField] string[] scenarios;	// 会話内容

この部分を、無くした。CSVの配列を設定してやるから。
こうして、Startの部分のCSV読みこむ。

	void Start()
	{
		Debug.Log ("start");

		CSVName = "sample"; 
		CSVNumber = "0"; 
		// Resouces/CSV下のCSV読み込み 
		csvFile = Resources.Load("CSV/" + CSVName + CSVNumber) as TextAsset; 
		StringReader reader = new StringReader(csvFile.text);

		while(reader.Peek() > -1) {
			string line = reader.ReadLine();
			// 配列に格納
			csvDatas.Add(line.Split(',')); 
			// 行数加算
			height++; 
		}
	}

uGUIのところから入れていたシナリオの長さは、CSVの行数を入れればよい。
なので、あとは、表示したいcsvDatasの2列目(このcsvの1列目には人の名前が、2列目にセリフを入れたつもり)をuiTextに表示するシナリオに格納させる。

	/// 初期化
	void Initialize()
	{
		isCompleteLine = false;
		uiText.text = "";

		//currentText = senarios[currentline];
		currentText = csvDatas[currentLine][1];

		textSpeed = TEXT_SPEED + (currentText.Length * TEXT_SPEED_STRING);

		LineUpdate();
	}

	/// 会話シーン更新
	IEnumerator ScenarioCoroutine()
	{
		while(true)
		{
			yield return null;

			// 画面を押した時、次の内容へ
			if(isCompleteLine && Input.GetMouseButton(0))
			{
				yield return new WaitForSeconds(completeLineDelay);

				//if(currentLine > scenarios.Length - 1)
				if(currentLine > height - 1)
				{
					ScenarioEnd();
					yield break;
				} 

				Initialize();
			}

			// 表示中にボタンが押されたら全部表示
			else if(!isCompleteLine && Input.GetMouseButton(0)) 
			{
				iTween.Stop();
				TextUpdate(currentText.Length); // 全部表示
				TextEnd();
				yield return new WaitForSeconds(completeLineDelay);
			}
		}
	}

ということで、 「//currentText = senarios[currentline];」
これを潰して、csvの配列を指定。「currentText = csvDatas[currentLine][1];」

もう一つ、「//if(currentLine > scenarios.Length – 1)」の長さは、「hight」がルノで、それに変更。「if(currentLine > height – 1)」

日本語がおかしい気がする。
今日の私は理解して書いているけど、明日の私がわかるだろうか。