【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#ファイルを作成し、そこにシーンを切り替える処理を記載します。
//省略
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()
を使用する。