月別: 3月 2018

UnityでCSVを読み込む

ソース残していないべ

かなり前、CSVを読んで配列に格納するスクリプトを作成しておりました。

Unity CSVを読み込んでシナリオを書き出す

ので、それ読み込めばすぐ終わるわ(笑)としていたら、削除していましたね。

多分ね。去年というか今年の初めにMacさんの調子がすごぶるよくなくて色々片付けしていた時に、不要だと削除したんだわ。

その時パッケージエクスポートしていないから何も残っていなくてま、再作成。

ついでなので、ここにもソース乗せておく。

パッケージ化したいので、別プロジェクトでサクッと作ります。

事前準備

①テスト用CSV:今回は4行2列のものを準備。

Assetsに「Resources」フォルダを作成、さらにわかりやすくするため、そのフォルダの下位フォルダ「Scenario」の中にCSVをインポートしておきます。

②CSVを読み込むアクションが必要なのでボタンを配置

③CSVを読むスクリプト「CsvReader」をキャンバスUIをつける。

ソース

面倒臭いので、そのまま載せる。なお、c#です。

using UnityEngine;
using System.IO;

public class CsvReader : MonoBehaviour {


	//読み込むCSVファイル
	private TextAsset csvFile;
	//表示用シナリオ(退避用CSV)
	private List<string[]> scenarioList = new List<string[]>();
	//シナリオ行数カウンタ
	private int csvCount = 0;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}

	public void CsvRead (string scenarioName){

		csvCount = 0;

		csvFile = Resources.Load ("Scenarios/" + scenarioName) as TextAsset;
		StringReader reader = new StringReader (csvFile.text);

		//csvファイルを取得
		while (reader.Peek () > -1) {
			string line = reader.ReadLine ();
			scenarioList.Add (line.Split (','));

			Debug.Log (scenarioList [csvCount] [0] + "," + scenarioList [csvCount] [1]);

			csvCount++;
		}

	}
}

動きはDebug.logで確認するため、入れています。

ま、これでおっけ。その後は、ボタンの「On Click」時の動きを設定してあげる。

シナリオ名前を変えて読み込みたいので、引数で渡しています。

この類の処理に関する詳しい解説を乗せているサイト様は山ほどあるので、これはあくまで私の備忘として説明は割愛。

ボタンを押すと、Debugを吐き出します。

ついでにパッケージエクスポート

パッケージをエクスポートしよう。

ここにある。以上。

いつも思うのだが

Unityで初めてプログラミングを全くやったことない人が、これでプログラミング覚えるのはあまり良くない気がする。

知っている人だからこそのやり方があると思うのだけど、

例えば、Unityはボタンにスクリプトをつけるという前提なので、クラスを作ってNewしようとすると怒る。それ、許さないって怒られる。

別の言語でプログラミングやる方はお分かりでしょうが、クラスNewできないんだふーんってなるじゃん?

逆のバターンで、クラスをNewしようとする発想がない人がやるとちょっとなと思って。いや、偏見と先入観かもしれないけど。

シーンを分けることを考える

シーンの分け方のルール決めよう

割と、シーンの分け方に甘かったかな。

今回のアプリは1つのシーンのほぼほぼ集約するつもりだったんだけど、

弱一ヶ月半ぶりに開いてみて(ついでに3.3にupしてみて)、

このシーンの分け方だと、非常にまどろっこしいことに気づいた。

簡単に言えば、スパゲッティ化する。

なるほど、シーンを分けることは、こういうことがと気づくことができましたのね。

・・・日にち開けてプロジェクト開いてみるのは良い経験だよね。不本意だけど。

ここで、Qiitaを漁って良い記事を見つけました。

・[Unity] Sceneの役割や使い方をざっくりまとめた

https://qiita.com/lycoris102/items/bf0a9ec4a653b4dd97b9

改めて考え直すととても役に立つ良い記事。

プログラム自体は割とわかりやすくかけていたので(褒めよう過去の私)、あとは保守面を考えて、シーンを分けようと思います。

会社行くまであと3週間ほど、それまでにゲーム性のところ完成しよう。

明日の目標は、ゲーム開始シーンの完成。

必要なのは

①ゲーム初めての判定
②会話用の見栄え
③ CSV読み込み
④自分情報の初期設定
⑤トップ画面を表示する ←これはもうあるので、表示するだけ。

できるレベルの目標を決めてやらないと、ダラダラになりそう。

© Copyright 2017 「It Happens」 All rights reserved.