UnityでCSVを読み込む
ソース残していないべ
かなり前、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しようとする発想がない人がやるとちょっとなと思って。いや、偏見と先入観かもしれないけど。