Unityにテキストファイルを取り込んでスクリプトから読み込む

今回はテキストファイルをUnityに取り込んでその中に記述してあるテキストをスクリプトから操作してみます。

これが出来ると何がいいかと言うとRPGやサウンドノベルゲームで会話のテキストを多く使用する場合、スクリプト内にテキストを記述してもいいですが、

テキスト量が多くなり処理内容を探すだけでウインドウを多くスクロールする必要が出てきます。

スクリプト内には処理する内容だけを記述し、実際に表示するテキストと分けておいた方が管理しやすくなります。
(テキストだけを記述したクラス等を作成して、表示したいテキストを返すようにするのもいいかもしれません)

スポンサーリンク

テキストファイルを取りこむサンプルの作成

テキストファイルの作成

まずはパソコン内にテキストファイルを作成します。

Unityに取り込む為テキストファイルを作成

↑のように普通のテキストファイル(.txt)を作成します。

テキストファイルに記述した内容

↑のようにサンプルのテキストを記述します(↑はテキストファイルの中身です)。

ここでは適当にテキストを入力してください。
スクリプトで1回に表示するのは改行までになります。

Unityで作成したテキストファイルを取りこみResourcesフォルダに入れる

Unityのメニューからテキストファイルを読み込む

UnityのメニューのAssets→Import New Asset…を選択し、さきほど作成したテキストファイルを選択します。

Unityに取り込んだテキストファイルの画像

Unityに取り込むとテキストファイルは↑のようになります。

取り込んだテキストファイルをダブルクリックするとデフォルトではMonoDevelopが起動しテキストの内容を変更する事が出来ます。

Unity内でテキストファイルの作成は出来ないんかな?(謎)

Unityでテキストファイルの中身を作るには一旦ダミーのテキストファイルを取り込んだ後に中身を編集する必要があるかもしれませんね。

次にUnityに取り込んだTest.txtをCtrl+Dキーでコピーし名前をTest2とします。

Test2ファイルの中身は

Resourcesフォルダに入れたテキストファイルの中身

↑のようにしました。

その後ProjectタブのAssetsエリアで右クリック→Create→Folderを選択し、名前をResourcesとします。

フォルダをResourcesとすると特別なフォルダとなります。

Resourcesフォルダにあるアセットやオブジェクトを直接読み込む事が出来ます。

スクリプトから指定のテキストファイルを選択する時に直接ファイル名で読みだす事が出来ます。

このフォルダにTest2ファイルを移動させます。

これでテキストファイルの準備が出来たので、次は左クリックした時にTestファイルの中身を、右クリックした時にTest2ファイルの中身を表示するようにしてみます。

テキストファイルの中身表示用UIを作成

まずはテキストファイルの中身を表示するUIを作成します。

読み込んだテキストを表示するUI

↑のようにシンプルにCanvas直下にTextを作成します。

テキストファイルの中身を読み込むLoadTextスクリプトの作成

Canvasには新しくLoadTextスクリプトを作成し取りつけておきます。
LoadTextは以下のようになります。

LoadTextスクリプトの解説

それでは中身を少し見てみましょう。

テキストファイルを扱うにはTextAssetを使用する必要があります。
その参照変数をtextAssetとしたら

textAsset.text

で中身を全部取り出せます。

ResourcesフォルダのTest2ファイルを取り出すには

Resources.Load関数を使用し第1引数にファイル名、第2引数にそのファイルの型を指定します。

読み込んだテキストファイルは改行文字(¥n)を含んだ形で記述されていますので、Split関数を使用して¥nを使って分割し文字列型の配列に入れます。

Splitは引数の文字で分割し、文字列型の配列を値として返します。

通常のJavaScriptであれば

『分割したい文字列』.Split(“\n”);

で分割出来るんですがUnityだと”(ダブルクォーテーション)、’(シングルクォーテーション)どちらでもString型と判断されてしまう為、あえて

として、¥nを1つの文字に変換して使用しています。
Parseはその型に変換する事が出来ます。

一番難しい部分は説明し終えました。

後は配列に入れたメッセージを順番に表示しているだけです。
ただ¥nで分割しているので連続で改行文字が来た場合は配列の中身が空の場合があります。

そういった時は会話が終了した時と判断し会話を終わらせたりして、次の会話がくるまで待たせたりする事が出来ます。

endMessageにtrueを入れてる部分ですね。
今回のサンプルでは特に使用していませんが、会話毎に改行文字を連続で入れて置けばひとつのテキストファイルに会話の内容をある程度詰め込めるかと思います。

テキストファイルの読み込みを確認する

ではUnityを実行してメッセージが表示されるか確認してみましょう。

読み込んだテキストファイルの中身を表示するサンプル

↑のようになりました。
改行文字でメッセージが区切られている為マウスボタンを押すたびに次の文字列が表示されています。

サンプル動画では最後適当に連打していますが気にしないでください・・・・・(^_^;)

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます