UnityUnityメモ

初心者向け!Unityでシーンを切り替える簡単な方法

Unity

はじめに

Unityでゲームを作るとき、シーンを切り替える方法はとても重要なスキルです。例えば、タイトル画面からゲーム本編へ移動したり、ステージをクリアした後に次のステージへ進んだりするときに必要になります。

初心者でも簡単にできるシーン切り替えの方法を、わかりやすく解説します!
この記事を読めば、Unityでスムーズに画面を遷移させる仕組みを作れるようになりますよ。
それでは、早速始めましょう!

Unityを使ったことがないという方はコチラの記事から見てみてください!

1.シーンを作成しよう

まずはシーンを作成しましょう。シーンとは、ゲーム内の画面やステージのことを指します。例えば、タイトル画面やゲームのステージなど、それぞれの状態をシーンとして管理します。

シーンを作る手順

  1. プロジェクトウィンドウで右クリックし、
    **「Create」→「Scene」**を選びます。
  2. 名前をわかりやすく付けましょう。
    例: Title(タイトル画面用)と Stage1(ステージ1用)の2つを作成します。

シーンにオブジェクトを追加する

次に、作成したシーンにオブジェクトを配置してみましょう。

  1. ヒエラルキーウィンドウで右クリックして、
    **「UI」→「Text」**を選び、テキストオブジェクトを作成します。
  2. 作成したテキストに名前を付け、内容を変更します。
    例: Title シーンでは「タイトル画面」、Stage1 シーンでは「ステージ1」と表示させます。
  3. 各シーンを 「File」→「Save」 で保存します。

これでシーンの基本セットアップは完了です!次のステップでは、シーンを切り替えるためのスクリプトを作成していきましょう。




2. シーンをビルド設定に追加しよう

作成したシーンを切り替えるには、Unityのビルド設定にシーンを追加する必要があります。この設定をしないと、シーンを切り替える処理が動作しないので注意しましょう!


ビルド設定をする手順

  1. ビルド設定を開く
    • メニューバーから 「File」→「Build Settings(UnityのバージョンによってはBuild Profile) を選択します。
  2. シーンを追加
    • 「Scenes In Build(Scene List) のリストに現在のシーンが含まれていない場合、追加する必要があります。
    • 現在のシーンが選択されている状態で、ウィンドウ下部の 「Add Open Scenes」 ボタンをクリックします。
    • 追加されたシーンがリストに表示されます。
  3. 他のシーンも追加
    • プロジェクトで切り替えたい全てのシーン(例: TitleStage1)を開き、同じ手順でリストに追加します。
  4. シーンの順番を確認
    • シーンの順番はゲームの進行に影響を与えませんが、整理しておくと分かりやすいです。リスト内のシーンをドラッグして順番を並び替えることも可能です。

注意点

  • シーン名の確認
    スクリプトで指定するシーン名は、ビルド設定で登録されている名前と一致している必要があります。
  • 未登録のシーン
    ビルド設定に含まれていないシーンは切り替えられないので、必ず確認しましょう。



3. シーン切り替え用スクリプトを作ろう

次に、シーンを切り替えるためのスクリプトを作成します。これがあれば、ボタンを押したときや特定の条件が満たされたときに、簡単に別のシーンに移動できるようになります!


スクリプト作成の手順

  1. プロジェクトウィンドウで右クリックします。
  2. **「Create」→「C# Script」**を選びます。
  3. スクリプトの名前を「SceneChanger」に設定しましょう。

スクリプトの内容を記述

  1. 作成したスクリプトを ダブルクリック して開きます。
  2. 以下のコードを入力してください:
using UnityEngine;
using UnityEngine.SceneManagement;

public class SceneChanger : MonoBehaviour
{
    // シーンを切り替えるメソッド
    public void ChangeScene(string sceneName)
    {
        SceneManager.LoadScene(sceneName);
    }
}

コードのポイント

  • SceneManager.LoadScene(sceneName)
    Unityの「SceneManager」を使って、指定されたシーン名に切り替えます。
  • 引数(string sceneName)
    切り替えたいシーンの名前を入力できるようにしています。例えば、「Title」や「Stage1」を指定できます。

スクリプトをアタッチ

  1. 空のオブジェクトを作成
    • ヒエラルキーウィンドウで右クリックして、
      **「Create Empty」**を選びます。
    • 作成したオブジェクトに名前を付けましょう。例: SceneController
  2. スクリプトをアタッチ
    • プロジェクトウィンドウから、作成した「SceneChanger」スクリプトを見つけます。
    • スクリプトをドラッグ&ドロップして、先ほど作成した空のオブジェクト (SceneController) にアタッチします。
  3. インスペクターで確認
    • ヒエラルキーウィンドウで SceneController を選択します。
    • インスペクターウィンドウに「SceneChanger」スクリプトが表示されていれば成功です。



4. UIボタンを作って設定しよう

次は、ボタンをクリックするとシーンが切り替わる仕組みを作ります。UnityのUIシステムを使えば簡単に実現できます!


ボタンを作る手順

  1. UIボタンを作成
    • ヒエラルキーウィンドウで右クリックし、
      「UI」→「Button」 を選択します。
    • ボタンがヒエラルキーに追加され、画面上に表示されます。
  2. ボタンの名前を変更
    • 作成したボタンを選び、インスペクターウィンドウで名前を ChangeSceneButton に変更しましょう。
    • ボタンに表示されるテキストも変更します。
      • 「Button」オブジェクトの子要素にある「Text」 を選択。
      • テキストを例として「Start」などに変更します。

ボタンにスクリプトを設定

  1. 「On Click ()」イベントを設定
    • ChangeSceneButton を選び、インスペクターウィンドウを確認します。
    • 下部にある 「On Click ()」セクション ボタンをクリックします。
  2. スクリプトを設定
    • ヒエラルキーウィンドウからスクリプトをアタッチしたオブジェクト(例: SceneController)を ドラッグ&ドロップ します。
    • ドロップダウンメニューから「SceneChanger」スクリプトの 「ChangeScene」メソッド を選択します。
  3. 引数(シーン名)を入力
    • ChangeScene メソッドの引数に切り替えたいシーン名を入力します。
      例: Stage1 と入力すれば、ボタンをクリックすると Stage1 シーンに移動します。

5.動作確認

  1. シーンを保存(Ctrl + S または Cmd + S)。
  2. プレイモードでゲームを再生。
  3. ボタンをクリックして、指定したシーンに切り替わるか確認しましょう。

まとめ

この記事では、Unityでシーンを切り替える方法をわかりやすく解説しました。基本的な手順をしっかり覚えれば、タイトル画面からゲーム本編への遷移や、ステージ間の切り替えを簡単に実現できます。

ただ、プロジェクトが大きくなればなるほど、シーンの管理が複雑になることもありますよね。そんなとき、Advanced Scene ManagerUnity Scene Manager といったアセットを活用することで、シーンの整理や遷移の管理がさらにスムーズになります。視覚的な操作で効率的に作業を進められるので、開発スピードもアップ!

また、シーン切り替え時の演出を強化したい方には、フェード効果を簡単に追加できるツールもおすすめです。これらのアセットは、Unity Asset Storeで簡単に購入でき、きっとあなたのゲーム制作に役立つはずです!

ゲーム開発をもっと効率的に、もっと楽しくするために、ぜひこれらのアセットもチェックしてみてくださいね! 😊


よくある質問

Q
シーンを切り替えるときにフェードアウト効果を付けるにはどうすればいいですか?
A

フェードアウト効果を付けるには、UIのImageを使って画面全体を覆い、アルファ値を変えるスクリプトを追加すると簡単にできます。

Q
シーンがロードされる前に何か処理を行いたい場合はどうすればいいですか?
A

SceneManager.sceneLoadedイベントを使って、シーンがロードされる前後に処理を追加できます。

Q
複数のシーンを同時にロードすることはできますか?
A

はい、SceneManager.LoadSceneAsyncメソッドを使って、シーンを非同期にロードすることができます。