SwiftUIの基本を身につけたい方はこちら

【Unity】スタートボタンを押したら、ゲームシーンに切り替える方法(画面遷移・ボタンの使い方)

この記事では、トップ画面にて、ボタンを押したらゲーム画面に遷移するという簡単な画面遷移について解説していきたいと思います。

動作環境

Item Version
Unity Unity 2021.3.5f1
VSCode 1.67.2
Mac 12.4

やりたいこと

単純にトップ画面で、ボタンを押したら、ゲーム画面に遷移します。今回は2Dで作成しますが、3Dも同じように動きます。

実装方法

以下の手順で行なっていきたいと思います。

  1. トップシーン作成
  2. ボタン作成
  3. ゲームシーン作成
  4. スクリプト作成
  5. スクリプトをアタッチ
  6. シーンを設定・実行確認

1. トップシーン作成

まずは、トップシーンを作成しましょう。

STEP.1

プロジェクトを作成したら、上のメニューバーからFIle > Save As…をクリックしてください。

command + shift + SでもOKです。

STEP.2

TopSceneと入力し「Save」をクリックしてください。

STEP.3

わかりやすいようにトップ画面にテキストを配置します。

左上の+ボタンから、UI > Textを選択してください。

STEP.4

このようなウィンドウが表示されたら「Import TMP Essentials」をクリックしてください。

STEP.5

①TextTMP()をクリック
②PosX、PosYを0に設定
TopSceneと入力
④Font Sizeを50に設定
⑤Alignmentを中央に設定

これで実行すると以下のような画面になるかと思います。

注意

再生した時は、必ず再生ボタンをもう一度押して再生状態を解除してください。

そうしないと、以下の対応を行なっても再生状態を解除すると元に戻ってしまいます。

2. ボタン作成

次にゲームシーンに遷移するボタンを作成しましょう。

STEP.1

左上の+ボタンから、UI > Buttonを選択してください。

STEP.2

①左のメニューからButtonを選択
②PosXを0、PosYを-100に設定

これでボタンの配置は完了です。

3. ゲームシーン作成

次に、ゲームシーンを作成します。

STEP.1

現状のトップシーンを保存します。

その場でcommand + sを押してください。

STEP.2

上のメニューバーからFIle > New Sceneをクリックしてください。

command + nでもOKです。

STEP.3

そのままCreateをクリックしてください。

STEP.4

これで新しいシーンに切り替わったのでここでも保存を行います。

上のメニューバーからFIle > Save As…をクリックしてください。

command + shift + SでもOKです。

STEP.5

GameSceneと入力しSaveを押してください。

STEP.6

わかりやすいようにTextを配置します。

左上の+ボタンから、UI > Textを選択してください。

STEP.7

①Text(TMP)をクリック
②PosXを0、PosYを0、Widthを500、Heihgtを100に設定
GameSceneと入力
④Font Sizeを50に設定
⑤Alignmentを中央に設定

これでゲームシーンは完成です。実行すると以下のようになるかと思います。

注意

再生した時は、必ず再生ボタンをもう一度押して再生状態を解除してください。

そうしないと、以下の対応を行なっても再生状態を解除すると元に戻ってしまいます。

4. スクリプト作成

では、いよいよボタンの処理の部分を作成していきます。

STEP.1

まず、スクリプトを作成します。

①Assetsの空いているところで右クリック
②Create > C# Scriptを選択

STEP.2

名前をToGameSceneButtonに変更してください。

STEP.3

ダブルクリックで開きましょう。

STEP.4

スクリプトを以下のように記載してください。

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

public class ToGameSceneButton : MonoBehaviour
{
    public void OnClickToGameSceneButton()
    {
        SceneManager.LoadScene("GameScene");
    }
}

コード解説

public void OnClickStartButton()は、ボタンを押したときに呼ばれる関数です。

SceneManager.LoadScene("GameScene");でGameSceneというシーンに画面遷移させます。SceneManagerを使うには、using UnityEngine.SceneManagement;をインポートしてなければなりません。

これで画面遷移させるスクリプトは完成です。

5. スクリプトをアタッチ

次に、上記で作ったスクリプトをボタンに反映させます。

STEP.1

TopSceneに移動

TopSceneをダブルクリックして開きましょう。

STEP.2

ButtonにToGameSceneButtonをドラッグ&ドロップしてください。

STEP.3

①Buttonを選択
②On Click ()の右下の+ボタンをクリック

STEP.4

ButtonをOn Click ()のNone (Object)というところにドラッグ&ドロップしてください。

STEP.5

No Functionから、ToGameSceneButton > OnClickToGameSceneButton()を選択してください。

これで、ボタンへ処理をアタッチすることができました。

6.シーンを設定・実行確認

最後にシーンを設定して実行して確認します。

STEP.1

上のメニューバーからFile > Build Settings…をクリックしてください。

command + shift + BでもOKです。

STEP.2

GameSceneを追加します。

①TopSceneをScene In Buildのところにドラッグ&ドロップ
②GameSceneをScene In Buildのところにドラッグ&ドロップ

注意

必ず、TopSceneを上にしてください。

STEP.3

Scene/SampleSceneは今回必要ないので、チェックを外してください。それが終わったらこのウィンドは閉じてOKです。

STEP.4

command + sで保存してTopSceneを開きます。

TopSceneをダブルクリックして開いてください。

STEP.5

再生ボタンを押して確認しましょう。

Buttonを押すと、GameSceneが開かれると思います!

これで、トップ画面でボタンを押したら、ゲーム画面に遷移することができました。

評価