こんにちは、ともくんのゲーム作り部屋にようこそ!
このページでは、
「UnityのLoadSceneメソッドってなに?」
「LoadSceneってどうやって使えばいいの?」
というお悩みの方に向けた内容となっています。
Unityではゲームのシーンを切り替える際に、LoadSceneというメソッドを使います。
シーンとは、ゲームにおける画面のことで、例えば起動画面やゲーム画面、クリア画面などそれぞれをシーンファイルとして保存しておきます。
ゲーム内で、これらのシーンファイルを切り替えたり、読み込ませたりするのにLoadSceneメソッドを使うことで、簡単にシーンの切り替えができるようになります。
そこで、このページでは、Unityでゲームを作る際に使うLoadSceneメソッドについて、どんな仕様や特徴なのか、また使い方や注意点までをまとめていきます。
なお、このページでは、
Windows11
Unity Hub3.11.1
Unity6
のバージョンで解説しています。
LoadSceneメソッドとは?
まずは、LoadSceneメソッドがどんな時に使われるメソッドなのか、紹介していきます。
シーンファイルを読み込ませるメソッド
LoadSceneメソッドとは、シーンファイルを読み込ませる処理を行うメソッドです。
Unityでは、ゲーム内での画面毎にシーンファイルを作成していくことになります。
例えば、ゲームを起動した際の起動シーン、実際にゲームをプレイするゲームシーン、ゲームクリアした際のクリアシーンなどです。
LoadSceneメソッドを使うことで、それぞれのシーンを切り替えて表示させていくことができます。
プロジェクトに追加したシーンだけが読み込める
LoadSceneメソッドで読み込めるシーンは、プロジェクトに追加したシーンのみになります。
具体的には、ゲーム内のビルド設定にそのシーンファイルを登録しておく必要があります。
ビルド設定は、メニューバーの「File」から「Build Profiles」を選択します。

Build Profilesが開いたら、「Scene List」を選択して、Scene Listの中にシーンファイルをドラッグ&ドロップで追加しておきます。

このリストの中に、追加されているシーンのみLoadSceneメソッドで読み込むことができます。

LoadSceneメソッドの使い方
ここからは、LoadSceneメソッドの使い方を紹介していきます。
SceneManagementを加える
LoadSceneメソッドは、SceneManagerクラスで定義しているメソッドで、利用するためにはSceneManagementをスクリプト内で宣言して加えておく必要があります。
そのため、LoadSceneメソッドを使いたいスクリプト内の上部で、
using UnityEngine.SceneManagement;
と、記述しておきます。
なお、僕の使っているUnity6では、LoadSceneメソッドをスクリプト内に記述すると、自動的に上記のSceneManagementが追加されるので、特に対応しなくても大丈夫そうです。
LoadSceneメソッドの引数でシーンを設定する
LoadSceneメソッドは、引数に設定したシーンを読み込むという処理を行います。
具体的には、
SceneManager.LoadScene(遷移させたいシーン);
と書くことで、シーン遷移の処理が行われます。
この遷移させたいシーンは、「シーン名」もしくはビルド設定の「シーン番号」のどちらかで設定することができます。
▼シーン名で指定した場合
SceneManager.LoadScene("MainScene"); // MainSceneを読み込む処理
▼シーン番号で指定した場合
SceneManager.LoadScene(1); // 1のシーンを読み込む処理
第二引数の指定で現在のシーンに別のシーンを追加することができる
LoadSceneメソッドには、第二引数を設定することができ、LoadSceneMode.Additiveと記述することで、現在のシーンに追加してシーンを読み込ませるということができます。
具体的には、
▼シーン名で指定した場合
SceneManager.LoadScene("MainScene", LoadSceneMode.Additive); // MainSceneを追加で読み込む処理
▼シーン番号で指定した場合
SceneManager.LoadScene(1, LoadSceneMode.Additive); // 1のシーンを追加で読み込む処理
上記のように、第二引数に設定してあげることで、別のシーンを追加することができます。
LoadSceneメソッドの注意点
ここからは、LoadSceneメソッドを使う際の注意点を紹介していきます。
現在のシーンのオブジェクトは全て消去される
LoadSceneメソッドでシーンを切り替える際は、LoadSceneMode.Additiveでシーンを追加する場合を除いて、現在のシーンのオブジェクトは基本的に全て消去されることになります。
ただ例えば、そのオブジェクトに設定していたHPやライフ、スコアポイントなどの変数も、全て消去されることになります。
そこで、遷移した先のシーンでも、特定のオブジェクトだけを残して変数などを管理したい場合は、そのオブジェクトにDontDestroyOnLoadメソッドを使うことで、シーンが切り替わってもそのオブジェクトが消えなくなります。
そのため、HPやスコアなどのゲーム全体で管理するためのオブジェクトである「GameManager」を作る際に、DontDestroyOnLoadメソッドを使うことがあります。
同期処理なので重くなることがある
LoadSceneメソッドは、ゲーム内で同期処理によってシーン遷移が行われるようになるため、ある程度規模の大きいゲームの場合、読み込むまで時間がかかってしまい、真っ黒の画面で待つことがあります。
これを防ぐために、LoadSceneAsyncメソッドを使うことで、非同期読み込みでシーン遷移を行うことができます。
非同期読み込みとは、ゲームの裏側でシーン遷移の処理が行われるので、待ち時間の間はゲームを続けることができます。
そのため、ある程度大きな規模のゲームを作る際は、LoadSceneAsyncの方を使うようにしましょう。
まとめ
このページでは、Unityでよく使われるLoadSceneメソッドについて、特徴や仕様、また使い方から注意点までをまとめていきましたが、いかがでしたでしょうか?
LoadSceneメソッドとは、指定したシーンを読み込ませる処理を行うメソッドです。
LoadSceneメソッドを使う際は、
にしてあげることで、シーンを切り替えて表示させることができます。
また、規模の大きいゲームを作る場合は、非同期で読み込むことができるLoadSceneAsyncメソッドを使うようにしましょう。
最後までお読みいただきまして、ありがとうございました!
コメント