UnityのスクリプトからUIのテキストを操作する

今回はブログのコメントからリクエストを頂いた内容になります。

UnityのスクリプトからUIテキストの内容を変更したい時にどうすればいいか?という内容になります。
実はこの内容、わたくしもUIを扱い始めの頃にJavaScriptでC#で書かれたスクリプトと同じような事をしようとして出来なかったものでした。

C#とJavaScriptで微妙に記述の仕方が変わるんです。
記述の仕方については実際にスクリプトを見てもらった方が早いと思います。

まずはヒエラルキー上にUIを作成します。

UIテスト1

上のように階層を作成します。

UIテスト2

CanvasにMessageTestC(C#で作成)とMessageTestJ(JavaScriptで作成)を作成し取りつけておきます。
テストする時にどちらかをアクティブ、どちらかを非アクティブにしてテストします。

スポンサーリンク

C#でUIを使用する時のスクリプト

MessageTestCは以下のように記述します。

C#の場合はMonoDevelopのインテリジェンス機能?が有効であればUIであるTextを使うと宣言が勝手に付くと思いますが、

using UnityEngine.UI;

上の宣言が必要になります。

またJavaScriptではUIのテキストはUI.TextとUIから始めなければいけませんが、C#の場合はTextとなります。
スクリプトの内容は

マウスの左クリックをした時に 代替テキストC2 というテキストの表示
SPACEキーを押した時に 代替テキストC3 というテキストの表示

を行っています。

JavaScriptでUIを使用する時のスクリプト JavaScriptで記述したMessageTextJの方は以下のように記述します。

JavaScriptの場合はUI.Textを取得します。
ブログの前半に投稿した記事ではGetComponentInChildren(UI.Text)としてますが、
GetComponentInChildren.<UI.Text>()で取得した方がいいみたいです。

スクリプトの処理内容はC#で作成したものとテキストの内容を変えただけで同じになります。

JavaScriptでもC#と同じようにUIのテキストを使いたい時

これまでに書いてきたように記述すればJavaScriptでもUIのテキストを扱えますが、C#と同じように使う事も出来ます。

usingの代わりにimportを使って明示的にパッケージを指定すればUI.TextではなくTextで使用する事が出来ます。
いやぁ・・・JavaScriptというよりJavaですね。

これでUnityのスクリプトからUIのテキストを操作する事が出来るようになりました。
ブログにコメントを頂いた方に返答した内容に多少付け加えて記事にしました。
簡易ではありますが、C#とJavaScriptでのUIの取り扱いの違いがわかるかと思います。