【ゲーム開発】外部テキストを表示してみる【unity】 | えんぴつのブログ

えんぴつのブログ

プログラミングを書いたり、ゲームをしたり
夢は安定した老後

 -UnityでRPGを作りたい...!!

 そんな管理人の備忘録


 RPGには膨大な量のテキストが必要となります。"Start"や"GameOver"などの短いテキストだったらGUITextを利用することで実現できますが、"Start"のGUIText、"GameOver"のGUITextと複数のGUITextオブジェクトを必要とします。

 そこで今回は、一つのGUIText内のGUIText.textを書き換えてみましょう。

 前回の記事【ゲーム開発】タイトル画面からゲーム画面に遷移させてみる【unity】では、画像表示の一例にメッセージウィンドウを作成してみました。

scene3
 前回表示したメッセージウィンドウ。
 メッセージウィンドウを作成したら、そこにテキストを表示させたいですね。でも、GUITextに直接テキストを書くのではなく、外部の.txtを読み込んでGUITextのテキストに格納してみましょう!

 
text1
 とりあえず、こんな感じを目指す。

 必要な処理は次の通り。
 ・外部テキスト(ここではtest.txt)の読み込み
 ・GUIText.textの書き換え

 1.外部テキストの読み込み

 Unityで外部テキストを読み込むには、Resources.Load()関数を使います。このResources.Loadはアセット内のResourcesフォルダーからテキストや画像を読み込むことができます。そのため、アセットにResourcesフォルダーを作成する必要があります。

text2
 アセット内にResourcesフォルダーを作成しよう!スペルミスするとResources.Loadが判定してくれないから注意しよう!

 今回のスクリプト(抜粋)

 void Start () {
  TextAsset txt = Resources.Load("test") as TextAsset;
  guiText.text = txt.text;
 }

 TextAsset txt = Resources.Load("test") as TextAsset;
 TextAsset型のtxtにResourcesフォルダー下のtest.txtを格納しています。
 

 2.GUIText.textの書き換え

 guiText.text = txt.text;
 guiTextのtextに先ほど読み込んだtxtのtextを格納しています。


 
text1
 意外と簡単にできました。Resources.Load()関数の説明は案外少ないので困りましたが、分かれば単純です。
 
 大規模なゲームではテキストや画像をサーバーに格納して、アプリの起動時やシーン遷移の時にロードしています。私も指定したurlから外部テキストを読み込ませてみたいですね。
 
 今回はここまで。
 次はキャラクター表示したり会話させてRPGっぽくしたいですね。

 ------------------------------------------------------
個人ブログもよろしく!
 動物園てくの
 喫茶店てくの
 漫画喫茶てくの