とりあえずゲームとしての形にはなってきましたので、タイトルとゲームオーバー画面を作ります。超簡単に。
タイトル画面とゲームオーバー画面を作る
シーンの追加
メニューからFile→New Scene(コントロールキー+Nキーでも可)を選んで、新しいシーンを作ります。

同じようにBasic 2Dを選んでCreateをクリックします。

作成したシーンをTitleとして保存します。
フォルダに
ざっくりとUIテキストを貼り付けます。そして、今回はUIボタンも貼りました。簡単すぎ!
プロジェクトにシーンを追加する
プログラムでシーンを切り替えるのに、少し準備が必要です。ファイル→ビルドプロファイルを選択します。


を選んで、今のシーンをプロジェクトに追加します。タイトル画面を追加したら、ゲームオーバーのシーンを作成して追加します。

ビルドプロファイルに追加するのも忘れずに。

ドラッグで順番を調整できますので、シーンリストの順番も整えておきましょう。
UIボタンの設定をする
UIボタンをクリックするとScene1に遷移したいので、制御用のスクリプトを作ります。
using TMPro;
using UnityEngine;
public class Title : MonoBehaviour
{
[SerializeField]
TextMeshProUGUI _label; //実際のボタンのテキストと紐付ける入れ物を作る
void Start()
{
// ラベルを初期化する
_label.text = "PRESS TO GAME START"; //紐付いたラベルの文字列を変える
}
public void OnPressed() //ボタンが押されたときに呼ばれる関数
{
UnityEngine.SceneManagement.SceneManager.LoadScene("Scene1"); //Scene1に切り替える
}
}
ボタンのテキストを制御するのに、テキストメッシュプロの設定を読み込む必要があるので、ファイルのはじめにusing TMPro;を追加します。また、インスペクタでボタンの設定をするために、
[SerializeField]
TextMeshProUGUI _label;
を使います。[SerializeField]は何かというと、publicにしなくてもインスペクタで設定ができるようにする指示文です。他のスクリプトからいじる必要がなければ、publicよりも推奨されています。TextMeshProUGUI _labelで、実際のボタンを紐付ける入れ物を作り、_labelという名前をつけます。以降、_labelに操作をすることで、ボタンのテキストが変更できます。
スクリプトとボタンを紐付ける
_labelとボタンのテキストを紐付けるために次の操作をします。

- ButtonオブジェクトをStartButtonに名前を変更します。
- StartButtonオブジェクトにTitleスクリプトをドラッグして取り付けます。

次に、TextをTitleスクリプトのラベルの欄にドラッグして設定します。これで、Titleスクリプトの中の_labelとボタンに表示されたテキストが紐付きました。Start関数の中の _label.text = “PRESS TO GAME START”で、ボタンのテキストを変更することが出来ます。
の中のボタンを押して処理をする仕組みを作る
この段階でもゲーム画面ではボタンを押すことは出来ます。しかし、押してもボタンの色が変わるだけで何も起こりません。そこで、ボタンを押すとTitle.csのOnPressed()関数が実行されるように設定します。

Titleスクリプトをクリック時()の の欄にドラッグします。(またはヒエラルキーから オブジェクトをドラッグしてもよい)
オブジェクトを選択した状態で、インスペクターの
の欄をクリックして、 → の順にクリックする。これで、ボタンをクリックするとScene1に切り替わるようになります。


ボタンを押すと切り替わった!
今回はここまでです。お疲れ様でした。
コメント