【Unity入門】スクリプトでTextの内容を変える

スクリプトでTextの内容を変えることができます。

やり方は、

gameObject.GetComponent<UnityEngine.UI.Text>().text = “変えたい内容”;

と記述するだけです。

using UnityEngine.UI;

を追加した場合は、

gameObject.GetComponent<Text>().text = “Hello”;

と記述します。

実際にやってみる

準備

それでは、実際に文字を表示させてみましょう。

まずは、以前作成した、『Unity Basics』というプロジェクトを開いてください。

『Unity Basics』を開いたら、スクリプトでTextの内容を変更するシーンを作りましょう。

Scenesフォルダの中に作成します。

ProjectウィンドウでScenesフォルダを選択しましょう。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので、『Scene』をクリックしましょう。

すると、Scenesフォルダの中に新しくSceneが作成されます。

Sceneの名前を『ChangeText』に変更しておきましょう。

今回は『ChangeText』の中でやっていきたいので、Sceneを移動します。

『ChangeText』をダブルクリックしましょう。

すると、Sceceを移動することができます。

Hierarchyウィンドウを見ると、現在のSceneが『ChangeText』に変わっていますね。

次にスクリプトで内容を変更するためのTextを作成しましょう。

TextはCanvasの子階層に配置します。

なので、まずはCanvasを作りましょう。

Hierarchyウィンドウで『+』ボタンを押してください。

色々と出てくるので、UI > Canvasと押していきます。

すると、Canvasが作成されます。

作ったCanvasの子階層にTextを配置しましょう。

HierarchyウィンドウでCanvasを選択した状態で、『+』ボタンを押してください。

色々と出てくるので、UI > Textと押していきます。

すると、Canvasの子階層にTextを配置することができましたね。

Gameビューを見てみると、確かに配置されているのが分かりますね。

配置されているのですが、文字の大きさが小さいですね。

文字を大きくしてみましょう。

HierarchyウィンドウでTextオブジェクトを選択してください。

InspectorウィンドウにTextコンポーネントの、

Characterの中に

Font Sizeという項目があります。

Font Sizeの値を『80』にしてください。

Font Size80は現在のTextオブジェクトのサイズでは収まりきらないので、Gameビューに表示されなくなります。

オブジェクト自体のサイズを大きくしましょう。

TextオブジェクトのWidthを『450』、

Heightを『230』に変更しましょう。

このように変更すると、Font Sizeがオブジェクト自体のサイズに収まりきるため、Gameビューに表示されるようになります。

これで、文字を大きくすることができました。

スクリプトでTextの内容を変えてみる

それでは、スクリプトでTextの内容を変えてみましょう。

今回は、スタート時にTextの内容を『Hello』と変えてみようと思います。

まずは、Textに追加するためのスクリプトを作成しましょう。

ProjectウィンドウでScriptsフォルダを選択してください。

選択した状態で『+』ボタンを押しましょう。

色々と出てくるので、『C# Script』を押しましょう。

すると、新しくスクリプトが作成されます。

名前が確定する前に『ChangeText』と変更しましょう。

スクリプトを作成したら、Textオブジェクトに追加します。

ChangeTextをTextオブジェクトにドラッグ&ドロップしましょう。

すると、TextオブジェクトにChangeTextが追加されます。

スクリプトを編集していきましょう。

ChangeTextをダブルクリックしてください。

すると、ChangeTextを編集できるようになります。

Start関数の中に

gameObject.GetComponent<UnityEngine.UI.Text>().text = “Hello”;

と記述しましょう。

コードについて説明していきます。

まず、gameobjectというのは

コードが追加されたオブジェクトのことですね。

今回であればTextオブジェクトのことです。

次にGetComponentを使って、

TextオブジェクトのTextコンポーネントを取得しています。

GetComponentにTextを指定するときはUnityEngine.UI.Textと記述しました。

これはUnityEngineという名前空間の中に記述されている

UIという名前空間のなかにある

Textクラスという意味です。

その後に記述されている.textというのは

Textコンポーネントのtextという項目です。

この項目はTextコンポーネントが追加されているオブジェクトの表示内容を決めるものです。

初期値ではNew Textとなっています。

なので、Gameビューにはそのように表示されています。

今回のコードでは、ここの値をゲームスタート時にHelloに変更します。

なので、この状態で再生すると、GameビューにはHelloと表示されるはずです。

実際にそうなるのか、再生して確かめてみましょう。

スクリプトを保存して、Unityエディタに戻り、再生ボタンを押しましょう。

すると、予想通りGameビューにはHelloと表示されますね。

usingで省略

GetComponentで指定したUnityEngine.UIは

名前空間なので省略することができます。

やり方は、コードの上の方に

using UnityEngine.UI;

と記述するだけです。

GetComponentで指定したUnityEngine.UIは

消してしまいましょう。

消してしまってもエラーが出ることはありませんね。

usingを使って名前空間を省略することで、コードがすっきりとして読みやすくなりました。