[Unity] CanvasにTextを配置して文字変更

Unityは3D/2Dのオブジェクトを主に使ってゲームを作りますが、テキストで説明したり、ポイントを表示したりする必要もあります。Textの設定方法について確認してみましょう。
 
text_03

Unity 2018.1

 




CanvasのText

 
画面に文字を配置するのは3Dオブジェクトとは少しやり方が異なりCanvasを使って行います。
また、それを何かのタイミングで変更したい場合があります。例えば、タイトル文字の変更やポイントアップ・ダウンなどです。
 

 

Canvasの生成

 
「Hierarchy」の「Create」
あるいはメニューの「GameObject」から「UI」「Canvas」を選択します。
 
canvas_01
 
Canvas と同時に EventSystem が自動で生成されます。
 
canvas_03

 

Textを生成

 
同じく「UI」「Text」を選択するとCanvasの下にTextが作られます。
 
text_01
 
Canvasは非常に大きいのでScene初期画面ではTextが見えないかもしれません。
 
cavans-size_01
 
Scene上で見ながら作成したい場合は位置など調整します。

Unityではテキストや画像、ボタンなどを画面に表示するための領域をCanvasと言います。これは他の3D Objectとは設定が異なります...

 
ここで中央にうっすらあるのがこのTextの位置調整をするためのアンカーになります。
 
canvas-text_02

 

文字、フォント、位置調整

 
TextのInspectorを開き Rect Transform の Width, Height を大きくします。
Textの文字を START に変更、Text(Script)の Font Size を100に変更します。
 
text_02
 
このように拡大されました。
 
text_03
 

アンカー

先ほども説明したアンカーですが、4つの小さな三角形のハンドルがデフォルトでUIに設定されています。
 
画面サイズやアスペクト比は端末で異なるため、絶対値で位置を設定すると端末によってずれることがあります。そのため、アンカーを中央、左上などに設定すると基準点として文字をそこからの距離として設定できます。
 
例えば、アンカーを左上の隅に設定して、そこからのポジション設定を行うと、
 
canvas-text_04
 
アンカーが左上に移動してそこに合わせた位置でテキストが配置されました。
 
text_04

 

文字の動的な変更

 
Textの文字列を「END」に入れ替えるには以下のように設定します。
 

 
これを元に「z」キーをたたくと文字が変わるスクリプトを作りました。
 
SetText.cs

 
「GameObject」「Create Empty」から空の GameObject を作りこのファイルをドラッグして設定します。
 
text_05
 
空の GameObject のInspectorにSetText.csでpublicで設定したTextが見えるので、そこにHierarchyのCanvasの下にあるTextをドラッグして設定します。
 
text_06
 
Gameに切り替えて実行、準備ができたところで「z」をたたくとSTART->ENDとなりました。
 

 
 
References:
Text – Unity マニュアル
Canvas – Unity マニュアル