今回は、Unityでゲームのタイトル画面を作成してみます。
手順は簡単。UnityのCanvasオブジェクトを使えばタイトル画面はすぐに完成します。
タイトル画面の作り方はある程度パターンが決まっています。なので覚えておくと様々なタイトル画面を作成する際に役に立つと思います。
また、Canvasの使い方を知っておく事で、画面UIの作り方についても理解を深められると思います。
- Unityでゲームのタイトル画面を作成した
- タイトル画面⇒ゲーム画面への遷移方法を知りたい
- UnityのCanvas上でUIを作成する仕組みが知りたい
コンテンツ
今回の開発の前提
以前作成したブロック崩しゲームのタイトル画面を作成するイメージで進めます。
ブロック崩しを作った時の記事は以下になります。
ブロック崩しは昔からゲーム開発者の入門用として最適なゲームです。 以前は2Dの座標計算で開発されるのがスタンダードだった様ですが、今は3Dで、かつ物理エンジンを使用したものが増えてきています。 Unityなどの開発エンジ …
また、今回はゲーム画面が1ステージのみある場合を前提とします。
※エンディング画面やオプション画面も無い状態で、単純にタイトル画面とゲーム画面のみを作る前提です。
タイトル画面の考え方
今回の場合、Unityでタイトルを作る時のパターンは以下の2つが考えられます。
- Sceneを2つ作成する(タイトル画面・ゲーム画面)⇒タイトル画面のスタートボタンをクリックするとゲーム用画面に移動
- Sceneを1つ作成する(タイトルもゲームも同じ画面)⇒ゲーム画面上にタイトルを表示してスタートボタンをクリックするとゲームが開始
※ステージ毎にSceneを作成する場合は、ゲーム画面がさらに追加されます。
今回は、1の場合の、タイトル画面とゲーム画面の2つのSceneを用意するケースで話を進めていきます。
Canvas(キャンパス)を使ってタイトル画面を作成
まずはCanvas(キャンパス)を使ってどの様にタイトルを作るのか、簡単に説明します。
Canvas(キャンパス)の仕組み
Canvasはゲームの中の世界とは別に、カメラに固定表示される文字やボタンを設定できるオブジェクト機能です。
タイトルやボタンのようなUI(ユーザインタフェース)を画面に配置する際には、基本的にこのCanvasを使用します。
テレビ番組などでも、タレントの方たちがいるテレビの中の世界とは別に、テレビタイトルやテロップ、ワイプ画面等が画面上に固定表示されていますよね。Canvasというのは、簡単に言うとあれと全く同じような仕組みです。
Unity公式リファレンス:https://docs.unity3d.com/ja/2020.3/Manual/UICanvas.html
※対象Versionを選択して参考にして下さい。
UIを配置
今回タイトル画面で使用するのは、以下の通り、CanvasのテキストUIと、ボタンUI、パネルUIになります。
※よく使用するUIです。
- パネル(Panel)UI ※タイトルの背景
- テキスト(Text)UI ※タイトル文字
- ボタン(Button)UI ※スタートボタン
これらのUIオブジェクトを配置する際は、ヒエラルキーウィンドウで右クリックするか、ツールバーの「GameObject」で以下を選択します。
- UI>Panel
- UI>Text
- UI>Button
ヒエラルキーウィンドウのCanvas配下にPanel、Text、Buttonができました。
■Canvas配下にPanel、Text、Buttonができあがる
ここからテキストUIと、ボタンUI、パネルUI、それぞれの設定について詳しく解説します。
パネル(Panel)-タイトル画面の背景
まずはパネル(Panel)のUIを作成してタイトル画面の背景を作成します。
以下の様にパネルを選択して、ImageコンポーネントのColorで好きな色を選択すれば完了です。簡単!今回は青っぽい色にしてみました。
テキスト(Text)-タイトル文字
次にテキスト(Text)でタイトル文字を作成します。
Textコンポーネントで自分が好きな文字を入力したり、文字装飾ができます。今回は「BlockGame」というタイトルを設定しました。
またRect Transformコンポーネントで文字の位置を調整できます。
ボタン(Button)-スタートボタン
最後にボタン(Button)を作成します。
Buttonコンポーネントでボタンのサイズや、ボタンの色などを設定できます。
さらに、Buttonオブジェクトの小オブジェクトであるTextオブジェクトで、ボタン上の文字を設定できます。
ボタン押下時の処理
UIの配置は完了したので、スタートボタンを押したらゲーム画面に遷移する処理を追加します。
以下の3ステップでボタン押下時の処理を作っていきます。
- C#スクリプトの作成
- Build SettingsでScene登録
- スタートボタンと処理関数の紐づけ
では順番に説明します。
C#スクリプトの作成
C#スクリプトの処理は非常に簡単で、ClickStartButton関数でゲーム画面があるSceneを読み込むだけです。
UIを使用する時は「using UnityEngine.UI;」を先頭に記述します。さらに、Sceneを移動する場合は「using UnityEngine.SceneManagement;」も記述します。
とりあえず、どちらもおまじないと思っておいてOKです。
また、SceneManager.LoadScene関数でSceneの読み込みができます。※「block_game」はゲーム画面のSceneファイル名です。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.SceneManagement; public class GameStart : MonoBehaviour { public void ClickStartButton() { SceneManager.LoadScene("block_game"); } } |
Build SettingsでScene登録
Scene移動をする場合は、Build SettingでScene登録する必要があります。
「FIle > Build Settings 」をクリックします。
Build Settingsでタイトル画面のSceneと、ゲーム画面のSceneを登録します。
スタートボタンと処理関数の紐づけ
C#スクリプトを作成したらスタートボタンにアタッチしましょう。
また、Buttonコンポーネントの「On Click()」と書かれた場所に、オブジェクトをアタッチする箇所があります。
ここにButtonオブジェクト(自分自身)をアタッチしましょう。
※C#スクリプトがアタッチされたオブジェクトを、さらにここにアタッチします。
No Functionと書かれたプルダウンをクリックすると、アタッチしたC#スクリプトのクラス名が出るのでクリックします。
そうすると、作成した関数「ClickStartButton」が表示されるので、これを選択します。
「ClickStartButton」が設定されました。
これで、スタートボタンを押したら関数「ClickStartButton」が実行されます。
ゲームを実行してみよう
さて、タイトル画面が作成できたので、さっそくゲームを実行してみましょう。
タイトル画面のスタートボタンを押すと、ゲーム画面に遷移します。
無事にタイトル画面からゲーム画面への遷移ができました。
※ちなみにスタートボタンを押した瞬間にゲームが開始(ボールが動き出す)していますね。これだと、ユーザがびっくりしてしまう可能性があります。ゲームがスタートするまでにカウントを入れたり、ゲーム画面に遷移後、何かボタンを押したらボールが動き出すという処理を入れても良いかもしれません。この辺りは、今後の改善点ですね。
まとめ
今回はタイトル画面を作成してみました。
一連の流れをおさらいをします。
■Canvas上に以下のUIを作成
- パネルUI(タイトルの背景を作成)
- テキストUI(タイトル文字の設定をする)
- ボタンUI(スタートボタンの設定をする)
■ボタン押下時の処理
- C#スクリプトの作成をする
- Build SettingsでSceneを登録する
- スタートボタンと処理関数の紐づけをする
■実行結果の確認
実際にスタートボタンを押して、画面遷移する事を確認
これは本当に様々な所で使うテクニックなので、しっかりと押さえておきましょう!