Unity備忘録5 シーン間を移動する方法

アイキャッチ ゲーム制作
スポンサーリンク

こんにちは、slashです。
今回はUnity備忘録5 シーン間を移動する方法です。
この方法で、シーンを読み込んで
別のシーンへ移動する事ができるようになります。

例えば、タイトル画面のシーンから
ゲームシーンに移動したり等、
シーン間の遷移が可能になります。

今回のポイント

SceneManager.LoadScene(”SceneName”)
SceneNameで指定したシーンを読み込む

下準備

シーン移動で画像は必須ではありませんが、
シーンごとに背景を用意しておきます。
今回は2つのシーンを使うので背景も2種類用意します。

背景1
シーン1背景
背景2
シーン2背景

また、今回はシーン移動でボタンUIを使用する予定のため
ボタン画像も用意します。

ボタン

シーンを作成

ここからシーンの作成を行っていきます。

Scene1

まず、1つめのシーンを作成します。
「File」>「New Scene」を選択します。

図1 新しいシーンの作成

その後、お好みのシーンテンプレートを選択して
「Create」をクリックします。

私は主に2Dでのゲーム制作をしているので
「Basic2D(Built-in)」を選択しています。

図2 テンプレートを選択

「File」> 「Save As…」を選択し、
現在のシーンを「Scene1」という名前で保存します。

図3 シーンを保存

次に先ほど用意した背景画像を設置します。
「Scene1」の背景をSceneビューにドラッグアンドドロップし、
移動、拡縮ツールで位置や大きさを調整します。

図4 シーン1の背景を設定

Scene2

Scene2の作成を行います。
作り方はScene1とほぼ同様なので簡潔に流れだけ書いておきます。

「File」>「New Scene」を選択

お好みのシーンテンプレートを選択して「Create」

「File」> 「Save As…」を選択し、
Scene2」という名前で保存する

「Scene2」の背景をSceneビューにドラッグアンドドロップし
移動、拡縮ツールで位置や大きさを調整

図5 シーン2の作成

これでScene1とScene2の2つができました。

作成したシーンをBuildSettingに登録する

シーン間を遷移させるには
作ったシーンをBuildSettingに登録する必要があります。

「File」> 「Build Settings」を選択します。
Build Settingsのウインドウが開くので、
「Scenes in Build」の箇所に
先ほど作成した「Scene1」と「Scene2」を
ドラッグアンドドロップで設定します。

図6 BuildSettingを選択
図7 2つのシーンをScenes In Buildに登録

また、この時
一番上に設定されているシーンは
ゲーム起動時に最初に呼び出されるシーンとなる
ので
今回はScene1を一番上に移動させます。

スポンサーリンク

シーンを移動する動作を作る

今回はボタンをクリックするとシーンを移動する
という動作を作ってみたいと思います。

ボタンUIの設置

まず、Scene1にボタンUIを設置します。

図8 ボタンを設置

ボタンUIについては以前の記事でも書いていますので、
設置方法がわからなければこちらの記事を
参照して頂ければと思います。

スクリプトの用意

C#Scriptを新規で作成し、「SceneChangeController」という名前にします。
そして先ほど設置したボタンUIに
ドラッグアンドドロップでアタッチします。

図9 C#ScriptをボタンUIにアタッチ

そして、「SceneChangeController」を開き
以下のようにスクリプトを編集します。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;//この行を追加

public class SceneChangeController : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    public void SceneChange1()
    {
        //Scene1からScene2へ遷移する
        SceneManager.LoadScene("Scene2");
    }

    public void SceneChange2()
    {
        //Scene2からScene1へ遷移する
        SceneManager.LoadScene("Scene1");
    }

}

シーン読み込みを行うには
using UnityEngine.SceneManagement;
という記載を追加しておく必要があります。

SceneManager.LoadScene(“SceneName”);
これが実行されると”SceneName”で指定したSceneに遷移します。

ボタンUIの設定をする

ボタンが押された時に
先ほどのスクリプトに記載した
SceneChange1()メソッドが実行されるように設定します。
設定方法は以前の記事でやった方法と同じなので
ここでは簡潔に流れを記載しておきます。

ヒエラルキービューでボタンUIを選択

インスペクターの「OnClick()」>「+」をクリック

ボタンUIをドラッグアンドドロップで設定

SceneChangeController>SceneChange1()

図10 ボタンが押された時に実行されるメソッドを設定

実行して動作確認

ここでゲームを起動してみます。

ボタンUIをクリックして
Scene2に画面が切り替わったら成功です!

図11 実行して動作確認

Scene2も同様に設定する

エディターでScene2を開き
こちらにもScene1と同様にボタンUIを設置します。

そして、ボタンがクリックされた時に
「SceneChangeController」の
SceneChange2()メソッドが実行されるように設定します。

図12 シーン2にボタンを設置

再度実行して動作確認

ボタンのクリックで
Scene1→Scene2→Scene1→・・・
とシーンの行き来ができていれば成功です!

図13 動作確認その2
タイトルとURLをコピーしました