スポンサーリンク
Unity C#・スクリプト実装

【Unity初心者向け】シーン切り替えの方法を徹底解説!ボタン・スクリプト・エラー対策まで

Unity C#・スクリプト実装

Unityでタイトル画面からゲーム画面へ移動したり、ゲームオーバー後にリザルト画面へ切り替えたりするときに必要になるのが「シーン切り替え」です。

ところが、初めて実装する場合は「ボタンを押しても反応しない」「エラーが出る」「コードを書いたのに画面が変わらない」といった問題に遭遇しやすいものです。

実際、シーン切り替えがうまく動かない原因の多くは、スクリプトの書き方ではなく設定ミスによるものです。そのため、コードだけを見ても解決しないケースが少なくありません。

タイトル画面、ステージ選択画面、ゲーム画面、リザルト画面などを作るうえで、シーン切り替えはほぼ必須となる機能です。早い段階で正しい手順を覚えておくと、今後のゲーム制作がかなりスムーズになります。

今回は、シーンの作成からBuild Settingsへの登録、SceneManager.LoadSceneの使い方、UIボタンとの連携方法まで順番に確認していきましょう。


Unityでシーンを切り替える手順【まずは全体像を理解しよう】

シーン切り替えは難しそうに見えますが、実際に必要な作業はそれほど多くありません。

まずは全体の流れを把握しておくと、途中で何をしているのか分からなくなることを防げます。

シーンとはゲームの画面単位

Unityのシーンとは、ゲーム内の画面やステージを管理する単位のことです。

例えば次のような画面は、それぞれ別のシーンとして作成されることがよくあります。

  • タイトル画面
  • ステージ選択画面
  • ゲームプレイ画面
  • リザルト画面
  • 設定画面

ゲームを遊んでいると画面が切り替わる場面はたくさんありますが、Unityでは「別のシーンを読み込む」ことで実現するケースが一般的です。

シーン切り替えの流れ

Unityでシーンを切り替える場合は、基本的に次の3ステップで実装します。

  1. シーンを作成する
  2. Build Settingsに登録する
  3. SceneManager.LoadSceneを実行する

特に重要なのがBuild Settingsへの登録です。

初心者の方はスクリプトばかり確認してしまいがちですが、シーンがBuild Settingsに登録されていないと、コードが正しくてもシーンは切り替わりません。

私もUnityを始めた頃は、コードのミスだと思って何度も書き直した結果、実はBuild Settingsへの登録忘れだったという経験がありました。

まず覚えるべき実装パターン

シーン切り替えには複数の方法がありますが、最初はシーン名を指定して読み込む方法を覚えれば十分です。

例えばタイトル画面からゲーム画面へ移動する場合は、次のようなイメージになります。

  • Titleシーンを表示する
  • スタートボタンを押す
  • Gameシーンを読み込む

この流れだけでも、多くのゲームで使われる基本的な画面遷移を実装できます。

まずはシンプルなシーン切り替えを確実に動かし、その後でローディング画面やフェード演出などを追加していくのがおすすめです。




Unityでシーンを作成してBuild Settingsに登録する方法

シーン切り替えを実装する前に、まずは遷移先となるシーンを作成し、Unityに認識させる必要があります。

ここで設定を忘れると、スクリプトが正しくてもシーンを読み込めません。初心者が最もつまずきやすいポイントなので、順番に確認していきましょう。

シーンを作成する

まずは切り替え先のシーンを作成します。

  1. Projectウィンドウ内で右クリックする
  2. Create → Sceneを選択する
  3. 作成したシーンに名前を付ける
  4. Ctrl + S(MacはCommand + S)で保存する
シーンを作成するunityのスクリーンショット

例えば次のような名前にしておくと管理しやすくなります。

  • Title
  • Game
  • Result
  • StageSelect

シーン名は後でスクリプトから指定するため、分かりやすい名前を付けておくのがおすすめです。

Build Settingsへ登録する

シーンを作成しただけでは、SceneManager.LoadSceneから読み込むことはできません。

Unityに「このシーンはゲーム内で使用します」と伝えるために、Build Settingsへ登録する必要があります。

Build Settingsへ登録するうunityのスクリーンショット
  1. File → Build Settingsを開く
  2. 登録したいシーンを開く
  3. Add Open Scenesをクリックする

登録が完了すると、「Scenes In Build」の一覧にシーンが表示されます。

複数のシーンを使用する場合は、タイトル画面やゲーム画面など、切り替え対象となるシーンをすべて登録しておきましょう。

シーン名登録が必要か
Title必要
Game必要
Result必要
テスト用シーン必要に応じて

登録漏れで発生するエラー

Build Settingsに登録されていないシーンを読み込もうとすると、Consoleにエラーが表示されます。

代表的なのは次のようなケースです。

  • TitleからGameへ移動しようとしたらエラーになる
  • Editorでは動くと思ったがビルド後に動かない
  • シーン名は合っているのに読み込めない

シーン切り替えが失敗した場合は、まずBuild Settingsの登録状況を確認してみてください。

特に実機ビルド時のトラブルはBuild Settingsが原因になっていることも少なくありません。

次は実際にSceneManager.LoadSceneを使ってシーンを切り替える方法を見ていきましょう。




UnityでSceneManager.LoadSceneを使う方法

シーンを作成してBuild Settingsへ登録できたら、次は実際にシーンを切り替える処理を作成します。

Unityでは、SceneManagerクラスのLoadScene()メソッドを使うことで別のシーンを読み込めます。

SceneManagerを使う準備

まずはシーン切り替え用のスクリプトを作成しましょう。

Projectウィンドウで右クリックし、Create → C# Scriptを選択します。

例えば「SceneChanger」という名前で作成します。

その後、スクリプトの先頭に以下のusing文を追加してください。

using UnityEngine.SceneManagement;

この記述がないと、SceneManagerを使用できずコンパイルエラーになります。

シーン名で切り替える方法

最もよく使われるのが、シーン名を指定して読み込む方法です。

using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneChanger : MonoBehaviour
{
    public void ChangeScene()
    {
        SceneManager.LoadScene("Game");
    }
}

このコードを実行すると、「Game」という名前のシーンが読み込まれます。

タイトル画面からゲーム画面へ移動する場合や、ゲームオーバー後にリザルト画面へ移動する場合など、多くのケースでこの方法が使われます。

なお、「Game」の部分はBuild Settingsに登録されているシーン名と完全に一致させる必要があります。

例えば以下のような違いでもエラーになる可能性があります。

  • Game → game
  • Game → GameScene
  • Game → Game (末尾にスペースがある)

シーン切り替えができない場合は、まずシーン名を確認してみましょう。

初心者はシーン名指定がおすすめ

これからシーン切り替えを覚える場合は、シーン名指定をおすすめします。

方法メリット注意点
シーン名指定分かりやすく管理しやすい名前の入力ミスに注意
インデックス指定記述が短い順番変更に弱い

また、初心者の方が混同しやすいのですが、シーン切り替えはSetActive()による表示切り替えとは別の機能です。

SetActive(false)はオブジェクトを非表示にするだけで、別のシーンを読み込むわけではありません。

画面そのものを切り替えたい場合は、SceneManager.LoadScene()を使用します。

SceneManager.LoadScene(1);

のようにBuild Settingsの番号を使う方法もありますが、シーンの順番変更に弱いため、初心者のうちはシーン名指定がおすすめです。




Unityでボタンからシーンを切り替える方法

ゲームでは、タイトル画面の「スタート」ボタンやリザルト画面の「リトライ」ボタンなど、UIボタンからシーンを切り替える場面がよくあります。

ここでは、ボタンをクリックしたときに別のシーンへ移動する方法を確認していきましょう。

UIボタンを作成する

まずはシーン内にボタンを配置します。

シーン内にボタンを配置するunityスクリーンショット
  1. Hierarchyウィンドウで右クリックする
  2. UI → Buttonを選択する
  3. CanvasとButtonが自動生成される
  4. ボタンのテキストを変更する

例えば「ゲーム開始」や「次へ」といった分かりやすい名前にしておくとよいでしょう。

標準UIでも十分実装できますが、見た目を整えたい場合はUIアセットを活用する方法もあります。

Better UI
✅アセットストアでチェックする

OnClickに登録する

次に、ボタンが押されたときにシーン切り替え処理を実行できるよう設定します。

まずは以下のようなスクリプトを作成してください。

using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneChanger : MonoBehaviour
{
    public void ChangeScene()
    {
        SceneManager.LoadScene("シーン名");
    }
}

作成したスクリプトを空のGameObjectなどにアタッチします。

その後、ButtonコンポーネントのOn Click ()に登録します。

  1. Buttonオブジェクトを選択する
  2. InspectorのOn Click ()を探す
  3. 「+」ボタンを押す
  4. SceneChangerを付けたオブジェクトをドラッグする
  5. SceneChanger → ChangeScene() を選択する

これでボタンが押されたときにChangeScene()が実行されるようになります。

実際に動作確認する

設定が終わったら、Playボタンを押して動作確認してみましょう。

正常に設定できていれば、ボタンをクリックした瞬間に指定したシーンへ移動します。

もし切り替わらない場合は、次の項目を確認してみてください。

  • SceneChangerがオブジェクトにアタッチされているか
  • On Click ()に正しいオブジェクトが登録されているか
  • ChangeScene()がpublicになっているか
  • Build Settingsにシーンが登録されているか
  • シーン名が一致しているか

また、ボタン自体が反応しない場合はUI設定に問題がある可能性があります。

ボタン経由のシーン切り替えは、タイトル画面や設定画面など多くの場面で使われるため、ここでしっかり動かせるようになれば今後のゲーム制作でも役立ちます。




Unityでシーン切り替えができない時の対処法

シーン切り替えの実装自体はそれほど難しくありませんが、設定が1つでも不足していると正常に動作しません。

特に初心者の方はスクリプトのミスを疑いがちですが、実際には設定ミスが原因になっているケースが非常に多いです。

シーンが切り替わらない場合は、次の項目を順番に確認してみましょう。

Build Settingsに登録されていない

最も多い原因がBuild Settingsへの登録忘れです。

SceneManager.LoadScene()で読み込めるのは、Build Settingsに登録されているシーンだけです。

例えば「Game」シーンを作成していても、Build Settingsに登録されていなければ読み込みに失敗します。

まずは以下を確認しましょう。

  1. File → Build Settingsを開く
  2. Scenes In Buildを確認する
  3. 対象シーンが一覧に表示されているか確認する

シーン名が違う

シーン名の入力ミスもよくある原因です。

例えば実際のシーン名が「Game」なのに、コードで「game」と記述している場合は読み込みできません。

SceneManager.LoadScene("シーン名");

特に次のようなミスが起こりやすいです。

  • 大文字と小文字が違う
  • スペルミスがある
  • シーン名を後から変更した
  • 末尾に不要なスペースが入っている

シーン切り替えが失敗した場合は、Projectウィンドウのシーン名とコードを見比べてみてください。

スクリプトが実行されていない

コード自体は正しくても、メソッドが呼び出されていなければシーンは切り替わりません。

ボタンから実行する場合は、On Click ()の設定を確認しましょう。

また、スクリプトがアタッチされていないケースもあります。

確認ポイントは以下の通りです。

  • スクリプトがGameObjectにアタッチされているか
  • ボタンのOn Click ()に登録されているか
  • 実行するメソッドがpublicになっているか

Consoleにエラーが出ている

シーン切り替えが動かないときは、まずConsoleウィンドウを確認する習慣を付けるのがおすすめです。

Unityは問題が発生するとエラーメッセージを表示してくれます。

例えば次のようなエラーが表示されることがあります。

  • シーンが見つからない
  • NullReferenceException
  • コンパイルエラー

エラー内容を確認するだけで原因が分かるケースも少なくありません。

正常な状態のチェックリスト

シーン切り替えが正常に動作する状態は次の通りです。

確認項目正常な状態
シーン作成保存済み
Build Settings登録済み
シーン名コードと一致
using文SceneManagement追加済み
スクリプトアタッチ済み
On Click登録済み
Consoleエラーなし

上記をすべて確認しても解決しない場合は、プロジェクト全体の設定や別のエラーが影響している可能性があります。

シーン切り替えのトラブルは、落ち着いて1つずつ確認していけば解決できることがほとんどです。




まとめ|Unityのシーン切り替えは3ステップで実装できる

Unityでシーンを切り替える基本は、次の3ステップです。

  1. シーンを作成する
  2. Build Settingsに登録する
  3. SceneManager.LoadSceneを実行する

タイトル画面からゲーム画面へ移動したい場合も、リザルト画面からもう一度ゲームを始めたい場合も、基本の流れは同じです。

まずはシーン名を指定する方法で実装すると、どの画面へ移動するのか分かりやすく、管理もしやすくなります。

SceneManager.LoadScene("Game");

うまく動かないときは、いきなりコードを書き直すのではなく、Build Settingsへの登録、シーン名、On Clickの設定、Consoleエラーを順番に確認してみてください。

シーン切り替えに慣れてきたら、次はロード中の画面表示やBGMの引き継ぎにも挑戦すると、ゲームらしい画面遷移に近づきます。

Unityの基本操作やC#の基礎から体系的に学びたい場合は、入門書を手元に置いておくのも便利です。

Unityの教科書 Unity 6完全対応版
✅ Amazonでチェックする✅ 楽天でチェックする


※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク