【Unity】シーンを切り替える方法(切り替えるボタンを作成)
ボタンのクリックイベントにシーンを切り替えるイベントを実装して、シーンを切り替える方法です。
完成動作
![](https://programming.sincoston.com/wp-content/uploads/2021/07/シーンを切り替える方法.gif)
やり方
前提
<切替前のシーンを作成>
1.以下のように"スタート"ボタンを作成
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-110-1024x434.png)
2."Start"という名前でシーンを保存
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-112.png)
<切替後のシーンを作成>
1.以下のように適当なゲームオブジェクトを置く
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-111-1024x383.png)
2."Scene1″という名前でシーンを保存
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-113.png)
シーンを切り替えるスクリプトを作成
ChangeScene.csという名前のスクリプトを作成して、以下のコードを記載する。
※2パターンあるので、それぞれ紹介します。
パターン1 現在のビルド番号を取得してそれに+1したビルド番号を読み込む。
using UnityEngine;
using UnityEngine.SceneManagement;
public class ChangeScene : MonoBehaviour
{
public void NextScene()
{
// 現在のシーンを取得
Scene scene = SceneManager.GetActiveScene();
// 現在のシーンのビルド番号を取得
int buildIndex = scene.buildIndex;
// 現在のシーンのビルド番号を+1(次のシーンのビルド番号になる)
buildIndex = buildIndex + 1;
// 取得したビルド番号のシーン(現在のシーン)を読み込む
SceneManager.LoadScene(buildIndex);
}
}
パターン2 読み込むシーンの名前を直接指定する。
using UnityEngine;
using UnityEngine.SceneManagement;
public class ChangeScene : MonoBehaviour
{
public void NextScene()
{
// 読み込むシーンの名前を直接指定
SceneManager.LoadScene("Scene1");
}
}
シーンを切り替えるスクリプトをアタッチ
1."Start"シーンを開く
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-114.png)
2.空のGameObjectを作成
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-115.png)
3.作成した空のGameObjectに"ChangeScene"スクリプトをアタッチ
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-116.png)
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-117.png)
スタートボタンのクリックイベントを設定
1.スタートボタンのInspectorタブの右下の"On Click ()"の"+"を押下
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-118.png)
以下のようになる。
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-119.png)
2.クリックイベントに空のGameObjectにアタッチした “ChangeScene"スクリプトのNextScene()を設定
2-1.以下の赤枠をクリック
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-101.png)
2-2."Scene"タブを押下し、その中の"GameObject"オブジェクトを押下
※“Assets"タブではなく"Scene"タブから選ぶことが重要
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-120.png)
2-3.左下の枠に"GameObject"が入ったことを確認
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-105.png)
2-4."No Function"を押下して、以下のように選択して、NextScene()を押下
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-121.png)
これでスタートボタンをクリックすると"ChangeScene"スクリプトのNextScene()が実行される。
ビルド設定
※ここを設定しないと、以下のようなエラーが出るので注意
Scene with build index: 2 couldn't be loaded because it has not been added to the build settings.
To add a scene to the build settings use the menu File->Build Settings...
UnityEngine.SceneManagement.SceneManager:LoadScene (int)
ChangeScene:NextScene () (at Assets/ChangeScene.cs:15)
UnityEngine.EventSystems.EventSystem:Update ()
1.左上の"File"→"Build Settings"を押下
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-107.png)
2.表示されたウィンドウの中の"Add Open Scenes"を押下して、現在表示しているシーン(“Start"シーン)を加える。
※"Start"シーンのファイルをこの枠にドラックアンドドロップしても良い。
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-108.png)
以下のようになる。
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-122.png)
3."Scene1″シーンを枠内にドラックアンドドロップ
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-123.png)
以下のようになる。
![](https://programming.sincoston.com/wp-content/uploads/2021/07/image-124.png)
※各シーンの右端にある数字が"ビルド番号"
完成
ゲームを実行して、スタートボタンを押すと"Scene1″シーンに
ディスカッション
コメント一覧
まだ、コメントがありません