Unityは3D/2Dのオブジェクトを主に使ってゲームを作りますが、テキストで説明したり、ポイントを表示したりする必要もあります。Textの設定方法について確認してみましょう。
CanvasのText
画面に文字を配置するのは3Dオブジェクトとは少しやり方が異なりCanvasを使って行います。
また、それを何かのタイミングで変更したい場合があります。例えば、タイトル文字の変更やポイントアップ・ダウンなどです。
Canvasの生成
「Hierarchy」の「Create」
あるいはメニューの「GameObject」から「UI」「Canvas」を選択します。
Canvas と同時に EventSystem が自動で生成されます。
Textを生成
同じく「UI」「Text」を選択するとCanvasの下にTextが作られます。
Canvasは非常に大きいのでScene初期画面ではTextが見えないかもしれません。
Scene上で見ながら作成したい場合は位置など調整します。
ここで中央にうっすらあるのがこのTextの位置調整をするためのアンカーになります。
文字、フォント、位置調整
TextのInspectorを開き Rect Transform の Width, Height を大きくします。
Textの文字を START に変更、Text(Script)の Font Size を100に変更します。
このように拡大されました。
アンカー
先ほども説明したアンカーですが、4つの小さな三角形のハンドルがデフォルトでUIに設定されています。
画面サイズやアスペクト比は端末で異なるため、絶対値で位置を設定すると端末によってずれることがあります。そのため、アンカーを中央、左上などに設定すると基準点として文字をそこからの距離として設定できます。
例えば、アンカーを左上の隅に設定して、そこからのポジション設定を行うと、
アンカーが左上に移動してそこに合わせた位置でテキストが配置されました。
文字の動的な変更
Textの文字列を「END」に入れ替えるには以下のように設定します。
1 2 |
Text title; title.text = "END"; |
これを元に「z」キーをたたくと文字が変わるスクリプトを作りました。
SetText.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class SetText : MonoBehaviour { public Text title; // Use this for initialization void Start () { } // Update is called once per frame void Update () { // z キーが押された時 if (Input.GetKeyDown(KeyCode.Z)) { title.text = "END"; } } } |
「GameObject」「Create Empty」から空の GameObject を作りこのファイルをドラッグして設定します。
空の GameObject のInspectorにSetText.csでpublicで設定したTextが見えるので、そこにHierarchyのCanvasの下にあるTextをドラッグして設定します。
Gameに切り替えて実行、準備ができたところで「z」をたたくとSTART->ENDとなりました。
References:
Text – Unity マニュアル
Canvas – Unity マニュアル