Unityではテキストや画像、ボタンなどを画面に表示するための領域をCanvasと言います。これは他の3D Objectとは設定が異なります。
Canvas
UI要素であるTextやImage等はCanvasを配置領域として使い、全てのUI要素はCanvasの子要素として作成する必要があります。
例えば、UIのTextを作成すると、自動的にCanvasのが生成されその下に生成されます。
Canvasの生成
個別にCanvasだけ生成してみましょう。
「Hierarchy」の「Create」あるいはメニューの「GameObject」から「UI」「Canvas」を選択します。
Canvas と同時に EventSystem が自動で生成されるのですが、Canvasはメッセージシステムとして EventSystem オブジェクトを使用しているからです。
Render Mode
生成されたCanvasの領域は矩形で示される範囲として表示され、UI 要素はこの領域に2次元的に配置します。
Sceneの初期画面ではCanvasは非常に大きく全体像が分かりません。
これはデフォルトでのRender Modeが 「Screen Space – Overlay」になっていて3D空間とはべつなためです。
このRender Modeには3種類のモードがあります。
- Screen Space – Overlay
- 3D空間をカメラが写しているものとは関係なくスクリーンに直接描画されるモード
- Screen Space – Camera
- 指定したカメラの前にいくらかの距離をとって、平面オブジェクトの上にあるかのようにレンダリングされる
- World Space
- UI をシーン内の平面オブジェクトであるかのように他の3Dオブジェクトと同じようにレンダリングされる
タイトルやポイントなどのゲームとの画面表示には「Screen Space – Overlay」が向いているでしょう。
個別のシーンでの説明文などの文字表示にはカメラを切り替えて「Screen Space – Camera」が適しています。
3Dオブジェクトと一緒に移動する必要がある場合では「World Space」で1つのオブジェクトとして扱うことができます。
SceneでCanvasの調整
例としてTextを設定してSceneで見やすいように調整してみます。
「UI」「Text」の選択でCanvasの下にTextが作られます。
残念ながらこれはどこに配置されたのかわかりません。
「Game」に切り替えてみるとかすかに左下に「New Text」とあるのがわかります。
Scene上で見ながらやりたいとは思いますので、その時はハンドツールを使って移動・回転・縮小を行い調整します。シーンビューの操作
移動: クリック&ドラッグでカメラを移動
回転: Alt を押したまま、クリック&ドラッグ
ズーム: Alt を押したまま、右クリック&ドラッグ
Mac では、Control を押したまま、左クリック&ドラッグ
これらを使って調整します。
Sceneでも「New Text」が見えるようになりました。
Reference:
Canvas – Unity マニュアル