【Unity】UIでゲーム感演出|大きなCanvasにテキストを!

Score-appear Unity development
ゲームのスコア表示ってどうやるのだろう?
UI(ユーザーインターフェース)ですね!
今回は、画面上にテキストやボタンなどを表示する方法について解説していきます。 ゲーム開発において、欠かせない要素です。 ご理解を深めるために、実際に画面操作をしながら進めていただくことをオススメしています。 解説では、以下の続きとして解説をしていきます。 エッセンスだけを知りたい方は、スキップして本文へとお進みください。
【解説画面に沿ってやりたい方】 以下の2記事の内容をベースに解説しますので、事前に実施をお願いします。(必須) [所要時間:約20分]

▼キーボードからオブジェクトを操作▼

▼当たり判定▼

解説画面と全く同じ環境にしたい場合は、追加で以下の4記事を実施お願いします。(任意) [所要時間:約30分]

▼オブジェクトに色を付ける▼

▼オブジェクトが落ちないように壁を作る▼

▼エディタでパラメータ調整▼

▼回転するアイテム配置▼

ここまでで、事前準備は完了です。早速作成していきましょう。

Consoleウインドウに表示

Gameビューに表示する前に、Consoleウインドウで練習をしてみましょう。 [Player]がGETしたアイテム数をConsoleウインドウに表示します。

Scriptの追加

[Player]視点での数のため、[Player]に関連付けられたScriptにコードを追加します。
ProjectウインドウでScript[PlayerController]を開きます。1-project-playcontroller
開いたScriptに、以下の流れで変更を加えていきます。
  1. GETしたアイテムをカウントするitemcountというint型(整数)の変数を定義します。
  2. ゲームスタート時はカウンタをリセットします。
  3. ゲーム中は常時カウントを更新します。Debug.Log(変数)がコンソールウインドウに変数を表示するという意味です。
  4. アイテムをGETする度にGETした個数を1つずつ加算します。以下のようになります。 2-Script-add13-Script-add-2

Consoleウインドウで確認

[▶︎]ゲームプレイを押して、実行結果を確認します。
スタート時は、Consoleウインドウには、0が表示されています。 4-gameplay15-gameplay1-C アイテムをGETする度に、Consoleの数値が更新されています。 (現時点では2つGETしたので、最終行に2が表示される。)6-gameplay27-gameplay2-C これで、Consoleの表示は完了です。

Gameビューに表示

今回はGameビュー上にTextを表示させる方法を解説します。ここでは、Canvasを使用します。
Hierarchyウインドウ下の[+]をクリックして、[UI]>[Canvas]を選びます。8-Canvas-choice
Hierarchyウインドウに[Canvas]と[EventSystem]の2つのオブジェクトが作成されます。9-Canvas-EventSystem
EventSystemUIのイベントを管理。UIScript実行に使用される。

Canvasの確認

Canvasが配置されている場所を確認しましょう。 Sceneビューの[2D]をクリックして、2Dにしてマウスホイールを回転させて画面を引きます。10-Canvas-Sceneview Canvasは、UIオブジェクトを配置するための領域です。以下のような特徴を持ちます。
  • 2D/3Dで設定方法は同じ
  • カメラやライトの影響を受けない
  • 画面正面からの視点で表示
  • Canvasの大きさはGameビューの大きさに比例

UIオブジェクトの設置

作成したCanvas上にTextを配置します。
Hierarchyウインドウの[Canvas]を右クリックして、[UI]>[Text]をクリックします。11-UI-text-add
Hierarchyウインドウの[Canvas]の配下に[Text]が追加されて、Sceneビュー上にも「New Text」が表示されます。 12-NewText
Hierarchyウインドウの[Text]を選択した状態で、Inspectorウインドウで、オブジェクト名の変更、Textの変更、Font Sizeの変更を実施します。13-name-change

Textの配置の調整

表示したTextの配置を調整していきます。 HierarchyウインドウのText[ItemCountText]を選択した状態で、Inspectorウインドウの[Rect Transform]で調整します。
方法は2通りあります。
  • 座標を直接変更
  • 決められた位置に配置
今回は、後者を解説していきます。
決められた位置に配置する場合は、topとcenterで囲まれた図形をクリックします。 [Shiftキー]+[Altキー]を押したまま、配置したい場所をクリックします。14-Shift+alt
図の青丸がアンカーと言い、配置する場所の基準になります。

Scriptの追加

Projectウインドウで[PlayerController]を開きます。
UIを使うためには、「using UnityEngine.UI」を宣言する必要があります。 「itemcount.ToString();」はint型の整数(itemcount)をString型(文字列)の数字に変換するメソッドです。
16-Script117-Script2
追加したら、保存をします。

TextとScriptの関連付け

Scriptの内容をTextと関連付けて、Gameビューに表示するように設定します。
Hierarchyウインドウの[Player]を選択して、Hierarchyウインドウの[Item Count Text]を、Inspectorウインドウの[PlayerController]Scriptの[Item Count Text]にドラッグして離します。15-text-Player-relate

Gameビューで確認

[▶︎]ゲームプレイを押して、実行結果を確認します。
20-game これでUIの完成です。 補足として、メソッドを使ってコードを簡略化していきます。先ほどのコードでは、StartメソッドとUpdateメソッドに同じコードが記述されていました。仮に修正が必要になった場合に、2つに変更を加える必要があり、エラーやミスにつながる可能性があります。そのため、変更を1つで済むように変更します。
18-method119-method2
これで、メソッドを定義したので、呼び出すだけで、処理が実施されます。変更する際には最後に記述したメソッドだけを変更すれば良いので効率が良くなります。

UI用語集

今回紹介できなかった項目についても解説しています。困った時にご参照ください。 以上で、UIは終了です。お疲れ様でした。
▼ポチッと応援お願いします▼
にほんブログ村 IT技術ブログ Unityへ
にほんブログ村
タイトルとURLをコピーしました