【Unity】
シーンを切り替える(画面遷移)方法

ボタン押下時に画面遷移させる

投稿日 2022/11/04 更新日 2022/11/04


こんにちは。IT業界歴3年目の「元木皇天」です。

今回はUnityで「シーンを切り替える(画面遷移)」方法について画像つきで丁寧に解説したいと思います。

環境
OS:MacOS BigSur
Unity:バージョン2021.3.11f1

やりたいこと

ボタンを押してシーンを切り替える(画面遷移)

参考文献

UnityではじめるC# 基礎編 改訂版
Unity - LoadScene()
Unity - LoadSceneAsync()

シーンを切り替える方法1

シーンを切り替えるには「LoadScene()」というメソッドを使用します。

今回は例として、ボタンを押したときに「Test1AScene」から「Test2Scene」に移動する処理をご紹介します。

Unity画面のAssetsに「Test1Manager」というC#ファイルを作成し、そこにシーンを切り替える処理を記載します。

Projectに「Test1Manager」スクリプトを作成
//省略
using UnityEngine.SceneManagement;

public class Test1Manager : MonoBehaviour{
    //省略

    //Test2Sceneに切り替える
    public void PushButtonNext(){
        SceneManager.LoadScene("Test2Scene");
    }
}

ここで設定した「PushButtonNext」を画面のボタン押下時の処理として設定してあげれば、「TestScene2」にシーンを切り替えることができます。

また、大事なポイントとして「using UnityEngine.SceneManagement;」を記載し忘れるとコンパイルエラーになるので注意が必要です。

シーンを切り替える方法2(非同期処理)

先ほど紹介した「SceneLoad()」とは別に「SceneLoadAsync()」というメソッドもあります。

こちらは切り替え先のシーンのデータを「非同期」で読み込んで表示する処理です。

「SceneLoad()」では、実行直後に次のシーンに切り替え始めるのですが、その際にシーンの読み込み処理に時間がかかるような場合、ユーザから見て画面が固まって見えるような欠点があります。

また、「SceneLoad()」では画面が固まっている間にユーザが「なんか動かない」と思ってボタンを押したり画面をタップしたりすると、その操作がシーン切り替え後に一気に実行されるので、思わぬ挙動の原因となります。

そのためこちらの「SceneLoadAsync()」を使用することを勧めます。


使い方はSceneLoad()と同じです。

//省略
using UnityEngine.SceneManagement;

public class Test1Manager : MonoBehaviour{
    //省略

    //Test2Sceneに切り替える
    public void PushButtonNext(){
        SceneManager.LoadSceneAsync("Test2Scene");
    }
}

まとめ

シーンを切り替えるには
LoadScene()
または
LoadSceneAsync()
を使用する。

参考文献・おすすめ文献

Unity - LoadScene()
Unity - LoadSceneAsync()