Unityでノベルゲーっぽいテキスト表示機能を作る2(Text Assetからstringへデータを変換する)
↑前回作ったこれ(Text Assetと言うそうです)をスクリプト上で扱い易いように
string型のデータに変換します。
Text Assetのままでも多分やり方はあるのでしょうが、
よくわからないので何となく分かりそうな方法を取ります。
▼とりあえずの方針
まずは1つの長ったるいデータになってしまっているのを分割して見やすく。
上の画像で言う1行を一つのstring変数として持つようにします。
するとstring[0]は「1000,テスト1,1」となりstring[1]は「1010,テスト2,2」となる。
▼使えそうな機能を探す
string = TextAsset.text;
こう書くだけでTextAssetをstringに変換出来るようです。
無事にstringに変換できたので、テキスト分割に進みます。
▼使えそうな機能を探す
string[index].Split();
string変数を引数で指定した文字列のところで分割する機能を見つけました。
これを使ってテキストの分割に挑みます
//インポートしたテキストを分割する機能に使う変数
private string splitMark = "\n";
public string[] splitedText;
void Start () {
viewText = importText.text;
//splitMarkで設定した文字列ごとにテキストを分割する
splitedText = viewText.Split(splitMark[0]);//splitedTextにはcsvの1行ずつが入っている
}
こんな感じに1行ずつ配列データになりました。
private string splitMark = "\n";
splitMarkで使った\nという文字列は改行を表しているそうです。
今回の場合、改行が入るまでを1つのstring変数として分割するという挙動をとっています。
おそらく","としてコンマを使うと、コンマがくる毎にstringを分割してくれます。
viewText.Split(splitMark[0]);
この[0]は何なんだって話ですがよくわかっていません。
参考にした他所様の記事でそうなっていたのでそのままにしています。
たぶん「分割して沢山配列が出来たうちの何番目の配列から格納するか」みたいな話じゃないかなあ。
▼おわり
さらにコンマで分割するのもありかもしれませんが、
コンマでも分割すると、そのデータをどう管理すればいいのかよく分かっていません。
たぶん二次配列を作ったりするのでしょうが、分かりにくいのでとりあえずパス。
次でNGUI表示を行います。