Unity 2Dで画面遷移する方法!(シーン切り替え)

Unity 2Dでタイトル画面からゲーム画面に画面遷移するなど、画面遷移の方法について書いています。 前回作成した下記記事のタイトル画面から画面遷移してみます。 [https://codelikes.com/unity-2d-make-title-screen/]

Unity 2Dで画面遷移するには?

今回は下記のようにタイトル画面でStartボタンをクリックしたときに、画面遷移する方法を記載します。

画面遷移の動作確認

Unity 2Dで画面遷移するときは、ボタンを押したなどのタイミングで、スクリプトを実行して画面遷移します。 スクリプトの方でSceneManagerクラスを使用することで、読み込みたい画面を呼び出すことが可能です。

タイトル画面のStartボタンはヒエラルキーメニューから「UI => Button」から配置したボタンです。 こちらの記事にタイトル画面については書いています。

画面遷移するサンプル

下記の手順で画面遷移を実現できます。

1. ボタンに対して、スクリプトを作成する 2. スクリプトを編集して、画面遷移のコードを書く 3. ボタンをクリックした時に実行するメソッドを選択する

ボタンに対して、スクリプトを作成する

まず、ボタンに対してスクリプトを作成します。 ボタンを選んで、Inspectorから「Add Component」を選択します。

Add Componentでスクリプト追加

New Scriptを選んで、スクリプトを作成します。 今回はStartControllerにしました。スクリプトの追加が終わると下記のようになります。

Add Componentでスクリプト追加した後

スクリプトを編集して、画面遷移のコードを書く

作成したスクリプトを編集します。 Assets配下に作成したスクリプトが追加されているので、選択して編集します。 下記のようにコードを変更しました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class StartController : MonoBehaviour
{
    public void SwitchScene()
    {
        SceneManager.LoadScene("JumpTestScene", LoadSceneMode.Single);
    }
}

SceneManagerはシーンの管理をしてくれるクラスです。 LoadSceneメソッドを呼ぶことで、シーンの切り替えができます。

渡す引数として、第1引数にシーンの名前を渡します。 今回は一緒に追加しているJumpTestSceneを呼ぶようにしました。

第2引数はシーンを読み込むときのモードです。

シーンのモードにはSingleとAdditiveがあります。 Singleは全てのシーンを閉じて、ロードしてくれます。Additiveは現在ロードしているシーンにシーンを追加します。

今回はSingleを使用して、読み込んでみました。 LoadSceneModeについては、公式のこちらに記載がありました。

SceneManagerについての公式ドキュメントはこちらです。

ボタンをクリックした時に実行するメソッドを選択する

コードを書き終えたら、ボタンに対してクリックした時に作成したメソッドを呼ぶようにします。 StartボタンのInspectorを開いて、下記のようにStartボタンオブジェクトをヒエラルキーメニューからドラッグ&ドロップします。

スタートボタンをドラック&ドロップ

ドロップしたら下記のようになるので、「No Function」の箇所を押して、作成したメソッドを選択します。

インスペクターのボタンプロパティ

下記のように作成したメソッドを選択したら、設定完了です。 今回は作成したStartControllerのSwitchSceneメソッドを選択しました。

インスペクターのボタンプロパティ

画面遷移の動作確認する

画面遷移できるか動作確認します。 ゲームを開始して、スタートボタンを押すと、下記のように遷移できることが確認できました!

画面遷移の動作確認

ゲーム画面からクリア画面やゲームオーバー画面に遷移する場合も同じようにSceneManagerのLoadSceneメソッドを使うことで遷移することができます。

コメント