【2026年8月最新】Unityのシーン切り替えとは?実装方法と、コードが書けなくてもAIで試作する方法
研修用のシミュレーションアプリ、社内向けの体験デモ、簡単なミニゲーム——Unity(ユニティ)でこうした企画を試作しようとしたとき、必ず最初にぶつかるのが「複数の画面(シーン)をどう切り替えるか」という壁です。
この記事では、Unityにおけるシーン切り替えの基本的な実装方法を、初心者にも分かるように整理します。あわせて、コードを書けない・書く時間がない立場の人が、それでもUnityで試作を進める方法まで、後半で具体的に紹介します。
この記事を最後まで読むと、次の6つが明確になります。
01 BASICS 結論:Unityのシーン切り替えとは 「シーン」という単位と、切り替えの仕組みをまず理解する
📚 用語解説
Unity(ユニティ):ゲームや3D/2Dアプリケーションを開発するための統合開発環境(エンジン)。C#というプログラミング言語でロジックを記述し、画面上の見た目はエディタ上で直感的に配置できるのが特徴。ゲームだけでなく、研修用シミュレーションやVR/ARコンテンツの制作にも広く使われている。
📚 用語解説
シーン(Scene):Unityにおける「1つの画面・1つのステージ」の単位。タイトル画面、メインゲーム画面、リザルト画面などを、それぞれ別々のシーンファイルとして作成し、必要なタイミングで切り替えて使う。
Unityのアプリは、タイトル画面・メイン画面・結果画面のように複数のシーン(画面)で構成されるのが一般的です。「シーン切り替え」とは、この画面と画面を、ボタンを押したりイベントが発生したタイミングで切り替える処理のことを指します。
結論から言うと、Unityでシーンを切り替える最も基本的な方法は、標準機能のSceneManagerクラスが持つLoadSceneという命令を1行呼び出すだけです。仕組みとしてはシンプルですが、実務では「事前準備」「データの引き継ぎ」「パフォーマンス」という3つの落とし穴があり、この記事ではその全てを解説します。
Unityの基本操作(エディタの起動、GameObjectの配置)は理解している方を想定しつつ、専門用語は都度解説を入れています。プログラミング未経験の企画職・経営者の方も、後半の第7〜8章から読んでいただいて構いません。
1-1. シーンをどう分割すべきか(設計の考え方)
実装方法に入る前に、そもそも「何をシーン単位で分けるべきか」を決めておくと、後の実装がスムーズになります。一般的には、以下のような単位でシーンを分割します。
この分割の基準は「画面の役割が明確に切り替わるかどうか」です。逆に、同じ画面内で見た目の一部が変わるだけ(メニューの開閉など)であれば、シーンを分けずに1つのシーンの中でUIの表示・非表示を切り替える設計の方が、データの引き継ぎで悩まずに済み、シンプルになります。
02 SETUP 準備:シーンをBuild Settingsに登録する この手順を忘れると、実装しても切り替わらない
シーン切り替えの実装でつまずく人の多くが、最初の登録作業を忘れています。Unityでは、プロジェクト内にシーンファイルを作っただけでは、実行時に切り替え先として認識されません。
2-1. Build Settingsへの登録手順
📚 用語解説
Build Settings:Unityエディタのメニューにある設定画面。アプリを実際にビルド(実行ファイル化)する際に含めるシーンの一覧や、対象プラットフォーム(PC/スマホ等)を指定する場所。ここに登録されていないシーンは、実行時にコードから呼び出しても切り替わらない。
「シーンファイルは作った、コードも書いた、でも実行しても画面が切り替わらない」という場合、9割はBuild Settingsへの登録漏れです。エラーメッセージにも同様の警告(Scene could not be loaded)が出るので、まず確認しましょう。
03 IMPLEMENTATION 実装:SceneManagerでシーンを切り替える 基本コードと、名前指定・番号指定の違い
登録が終わったら、実際にコードを書いていきます。シーン切り替えを行うC#スクリプトを、切り替えのきっかけとなるボタンなどのGameObjectにアタッチ(取り付け)します。
3-1. 基本コード:シーン名を指定して切り替える
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneChanger : MonoBehaviour
{
public void GoToMainScene()
{
SceneManager.LoadScene("MainScene");
}
}
ポイントは冒頭のusing UnityEngine.SceneManagement;です。シーン管理の機能は標準では読み込まれていないため、この1行を書き忘れるとSceneManagerという単語自体がエラーになります。あとは、切り替えたいタイミングでGoToMainScene()のようなメソッドを呼び出すだけです。多くの場合、ボタンのOnClickイベントにこのメソッドを登録して使います。
3-2. インデックス番号で切り替える方法との違い
SceneManager.LoadScene(1);のように、シーン名の代わりにBuild Settingsでの登録番号(インデックス)を指定する方法もあります。ただし、この方法はBuild Settingsでシーンの順番を入れ替えると、意図しないシーンに飛んでしまうリスクがあるため、基本的には名前を指定する方法を推奨します。
| 指定方法 | 書き方の例 | メリット | デメリット |
|---|---|---|---|
| シーン名で指定 | LoadScene("MainScene") | 直感的で分かりやすい、順番変更に強い | シーン名を変更すると書き換えが必要 |
| インデックスで指定 | LoadScene(1) | 短く書ける | Build Settingsの順番変更に弱い、コードだけ見ても何のシーンか分からない |
3-3. ボタンにメソッドを紐付ける手順
コードを書いただけでは、まだボタンを押しても何も起きません。UnityのUIボタン(Button)には、クリックされたときに呼び出すメソッドを、エディタ上のInspectorウィンドウから設定する必要があります。
この「コードを書く」「エディタ上でGameObjectとメソッドを紐付ける」という2段階の作業は、Unity特有の操作感です。コードだけ完璧に書けても、この紐付け作業を忘れると動きません。逆に言えば、この2段階さえ押さえれば、シーン切り替えの実装自体はそれほど複雑ではありません。
複数のシーンから共通で呼び出したい処理(音声再生、シーン切り替え)が増えてきたら、1つの「マネージャー」役のGameObjectに処理をまとめ、DontDestroyOnLoadで常駐させる設計(シングルトンパターン)にすると、後々の管理がぐっと楽になります。
04 TIP 1: DATA Tips1:シーンをまたいでデータを引き継ぐ スコアや設定値を次のシーンに渡す3つの方法
シーンを切り替えると、そのシーンにあったGameObjectは基本的に全て破棄されます。そのため、「スコア」や「選んだキャラクター」のような情報を次のシーンに持ち越したい場合は、専用の仕組みが必要になります。代表的な方法は3つです。
| 方法 | 仕組み | 向いているケース |
|---|---|---|
| static(静的)変数 | クラスに紐付かない共有領域に値を保持 | 手軽にスコアや簡単な値を引き継ぎたいとき |
| DontDestroyOnLoad | 特定のGameObjectをシーン切り替えでも破棄されないようにする | BGM再生・セーブデータ管理など、常駐させたい仕組み全般 |
| ScriptableObject | アセットとしてデータを保持する仕組み | 複数の値をまとめて管理したい、設定データを扱いたいとき |
📚 用語解説
static(スタティック)変数:クラスの特定のインスタンス(実体)に紐付かず、プログラム全体で1つだけ共有される変数。シーンが切り替わって元のGameObjectが消えても、static変数の値自体は消えずに残り続ける。
public class GameData
{
public static int score = 0;
}
// スコアを加算する側
GameData.score += 100;
// 別のシーンで参照する側
scoreText.text = GameData.score.ToString();
📚 用語解説
DontDestroyOnLoad:Unityの標準機能の1つ。指定したGameObjectを、シーンが切り替わっても破棄せず維持し続けるための命令。BGMを流し続けたい、全シーン共通の管理役(マネージャー)を1つだけ存在させたい、といった用途で使われる。
スコアのような単純な数値1〜2個ならstatic変数で十分です。複数の設定やセーブデータをまとめて管理したい場合は、DontDestroyOnLoadで常駐する管理役オブジェクトを1つ作り、その中にデータを持たせる設計が、後々の拡張にも強くおすすめです。
4-1. PlayerPrefsとの違いに注意する
📚 用語解説
PlayerPrefs:Unity標準の、簡易的な永続保存機能。数値や文字列などの単純なデータを端末のストレージに保存し、アプリを完全に終了して再起動した後でも値を読み出せる。設定値やハイスコアの保存によく使われる。
static変数やDontDestroyOnLoadは、あくまでアプリを起動している間だけ値を保持する仕組みです。一方、PlayerPrefsはアプリを終了しても値が消えないという違いがあります。「今回のプレイ中だけスコアを引き継ぎたい」ならstatic変数、「次回起動時もハイスコアを覚えていてほしい」ならPlayerPrefs、という使い分けが基本です。
PlayerPrefsは手軽な反面、保存できるデータ量や種類(int・float・string程度)に制限があり、暗号化もされていません。パスワードや個人情報のような機密性の高いデータの保存には向きません。
4-2. どの方法も「壊れやすい設計」になりがちな理由
static変数は便利な反面、プロジェクトが大きくなるほど「どこで値が書き換えられたか分からなくなる」という保守性の問題を抱えやすい仕組みでもあります。小規模な試作段階では気にする必要はありませんが、機能を追加していく中で不具合が増えてきたら、DontDestroyOnLoadで常駐させた1つの管理役オブジェクトに、データの読み書きを集約する設計へ移行するのが定石です。
05 TIP 2: PERFORMANCE Tips2:切り替え時に動作が重くなる問題への対策 LoadSceneAsyncで「フリーズしたように見える」を防ぐ
SceneManager.LoadSceneは同期処理のため、シーンが重い(読み込むデータ量が多い)場合、切り替えの瞬間に画面が一瞬固まったように見えることがあります。この問題への標準的な対策が、非同期読み込みです。
📚 用語解説
非同期読み込み(Asynchronous Loading):重い処理を裏側(バックグラウンド)で少しずつ進めながら、メインの処理(画面表示など)を止めないようにする仕組み。UnityではLoadSceneAsyncを使うことで、読み込み中に進捗バーを表示するなど、ユーザーを待たせない工夫がしやすくなる。
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneChanger : MonoBehaviour
{
public void GoToMainSceneAsync()
{
StartCoroutine(LoadAsync("MainScene"));
}
IEnumerator LoadAsync(string sceneName)
{
AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);
while (!op.isDone)
{
// op.progress を使って進捗バーを表示できる
yield return null;
}
}
}
LoadSceneAsyncはAsyncOperationというオブジェクトを返し、そのprogress(進捗率)を参照することで、読み込み中の進捗バーやローディング画面を実装できます。研修用シミュレーションなど、画像や3Dモデルの点数が多いシーンでは、この対策がほぼ必須になります。
シーン切り替え自体を非同期化しても、そもそもシーン内の3Dモデルやテクスチャの容量が過大な場合は、根本的な軽量化(テクスチャ圧縮、不要オブジェクトの削減)が必要です。切り替え方法だけで全ての重さが解決するわけではない点に注意してください。
06 TIP 3: EFFECT Tips3:フェードエフェクトを付ける考え方 画面が唐突に切り替わる違和感をなくす
シーン切り替えを実装しただけだと、画面が「パッ」と唐突に切り替わり、ユーザーに違和感を与えがちです。ここに黒い画面へのフェードイン・フェードアウトを挟むことで、体験の質が大きく変わります。
6-1. フェード実装の基本的な流れ
画面全体を覆う
黒いCanvasを用意
ボタン押下で
黒を徐々に不透明化
完全に黒くなったら
シーンを切り替え
新シーンで
黒を徐々に透明化
技術的には、画面全面を覆うCanvasとImageを用意し、CanvasGroupのalpha値(透明度)を0から1、1から0へ滑らかに変化させることで実現します。この透明度の変化には、Unity標準のAnimatorを使う方法と、コードで直接alpha値を毎フレーム少しずつ変える方法の、大きく2通りがあります。
凝った演出は後回しにして、まずは黒一色のシンプルなフェードだけを実装するのがおすすめです。切り替えの唐突さという最大の違和感は、これだけでほぼ解消されます。
6-2. コードでalpha値を変化させる簡易実装例
using System.Collections;
using UnityEngine;
public class FadeController : MonoBehaviour
{
public CanvasGroup fadeCanvas;
public float duration = 1.0f;
public IEnumerator FadeOut()
{
float t = 0f;
while (t < duration)
{
t += Time.deltaTime;
fadeCanvas.alpha = Mathf.Clamp01(t / duration);
yield return null;
}
}
}
このコードは、Time.deltaTime(前フレームからの経過時間)を使って、指定した秒数(duration)かけてalpha値を0から1へ徐々に変化させる仕組みです。フェード処理が完了した後に、第3章で紹介したシーン切り替えの処理を呼び出すことで、「暗転してから切り替わる」演出が完成します。
演出にこだわり始めると、イージング(変化に緩急をつける計算式)や、フェード中の入力操作の無効化など、考慮すべき点は増えていきます。ただし最初の一歩としては、この程度のシンプルな実装で十分に「唐突さ」は解消されるので、まずはここから始めることをおすすめします。
07 WHO SHOULD CODE 【独自】コードが書ける人・書けない人、それぞれの現実的な学び方 「Unityを覚えるべきか」で悩む前に整理したいこと
ここまでの内容を見て、「自社でもUnityを使った企画(研修シミュレーション、展示会デモ、簡易ゲーム等)を試作したい」と考えている経営者・企画担当の方も多いはずです。ここで現実的な選択肢を整理します。
| 選択肢 | 習得・依頼にかかる時間 | 費用感 | メリット | デメリット |
|---|---|---|---|---|
| 自分でC#を学んで作る | 基礎習得に数ヶ月〜 | 実質0円(自分の時間コストのみ) | 完全に自分の裁量で作れる | 本業と両立しにくい、挫折率が高い |
| 開発会社・フリーランスに外注 | 見積〜納品まで数週間〜数ヶ月 | 試作規模でも数十万円〜 | プロの品質、責任範囲が明確 | 軽い試作・検証段階には重すぎるコスト |
| AI(Claude Code等)に書かせながら試作 | 指示してから数十分〜数時間 | 月額固定費(既存契約の範囲内) | 低コストで素早く形にできる、非エンジニアでも進められる | 複雑な3D表現・高度な最適化は別途専門知識が必要 |
7-1. AIに任せる部分と、人間が判断する部分の線引き
AIにコードを書かせるといっても、全てを丸投げできるわけではありません。試作を進めるうえで、役割を以下のように分けると混乱がありません。
| 領域 | 担当 | 理由 |
|---|---|---|
| シーン切り替え・データ引き継ぎ等の実装 | AI | 定型的な実装パターンが確立しており、AIが最も得意とする領域 |
| 「何を作りたいか」という企画の方向性 | 人間 | ビジネス上の目的や、ユーザーに与えたい体験の判断は人間の役割 |
| 見た目・演出のニュアンス調整 | 人間(AIに指示を出しながら) | 「もう少し落ち着いた色に」等の感覚的な調整は、人間の確認とフィードバックが必要 |
| 高度な3D表現・大規模最適化 | 専門エンジニア(必要になった段階で) | 試作段階を超えた領域はAIだけでは対応しきれないケースがある |
この線引きを最初に理解しておくと、「AIに任せれば何でも自動でできる」という過度な期待も、「結局エンジニアが必要なら意味がない」という過度な悲観も避けられます。試作の8割をAIに任せ、残り2割の判断と確認を人間が行う、というのが現実的なバランスです。
08 GENAI CASE DATA 【独自データ】GENAIが見てきた「非エンジニアの試作」実例 コードを書けない担当者が、AIと一緒に試作を進めるとどうなるか
弊社(株式会社GENAI)では、Claude Max 20xプラン(月額約30,000円)を契約し、社内の開発案件(WordPress/LP制作、業務スクリプト)にClaude Codeを日常的に活用しています。Unityのようなアプリ開発においても、考え方は同じです。
弊社の開発関連業務では、「コードを書く」作業自体はAIに任せ、人間は「何を作りたいか」を言葉で説明し、動いた結果を確認して次の指示を出すという役割分担で進めています。この分担は、UnityでもWeb開発でも共通して機能します。
C#構文を
1つずつ調べながら
手探りで実装
「タイトル画面から
メイン画面に切り替えたい」
と伝える
SceneManagerの
コードを生成・調整
動作を確認し、
気になる点を
言葉で伝えて修正
ここで紹介した削減効果は弊社の他業務(Web制作・スクリプト開発)における肌感ベースの実感であり、Unity案件固有の統計データではありません。試作の規模・複雑さによって所要時間は変動する点にご留意ください。
8-1. 実際にAIへ投げる指示の例
ポイントは、C#の構文やクラス名を覚える必要が一切ないことです。「何をしたいか」を業務の言葉で伝えれば、AIがUnityの標準的な実装パターンに変換してくれます。この記事の第2〜6章で紹介した内容は、まさにAIが裏側で実行している処理そのものです。
8-2. 試作から本格開発へ進む場合の考え方
AIとの試作で企画の手応えが確認できたら、次に考えるべきは「そのまま本格開発まで続けるか」「ここで専門の開発会社にバトンタッチするか」の判断です。この判断基準も、単純化すると以下のように整理できます。
特に社内稟議や投資判断の場面では、「言葉で説明された企画」よりも「実際に触って動かせる試作品」の方が、意思決定者の理解と納得を得やすいという実務上のメリットがあります。この試作コストを大きく下げられる点こそ、AIを開発プロセスに組み込む最大の価値と言えます。
09 CONCLUSION まとめ Build Settings登録、データ引き継ぎ、非同期化の3点を押さえる
この記事では、Unityのシーン切り替えの基本実装から、データの引き継ぎ、パフォーマンス対策、演出、そしてコードが書けない人がAIを使って試作を進める方法までを整理しました。最後にポイントを振り返ります。
SceneManager.LoadScene("シーン名")の1行で実装できるUnityを使った企画は、「作れるかどうか分からない」という段階で足踏みしてしまうケースが多くあります。この記事の実装方法を自分で試すのはもちろん、コードを書かずにAIと一緒に試作を進めるという選択肢も、ぜひ検討してみてください。
アイデアを「動くもの」にする最初の一歩を、AI鬼管理が一緒に伴走します
Unityのような開発分野でも、AIに任せられる範囲は着実に広がっています。
弊社の実運用ノウハウをベースに、試作段階からのご相談を承ります。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. SceneManager.LoadSceneとLoadSceneAsyncは、どちらを使うべきですか?
A. 小規模なシーンで読み込みに時間がかからない場合はLoadSceneで十分です。3Dモデルや画像点数が多いシーン、進捗バーを表示したい場合はLoadSceneAsyncを使うのが基本です。迷ったら非同期版を使っておくと後々のパフォーマンス問題を避けられます。
Q. シーンを切り替えるとGameObjectの状態は全て消えますか?
A. はい、通常のシーン切り替えでは、そのシーンに存在していたGameObjectは全て破棄されます。値を保持したい場合は、記事内で紹介したstatic変数・DontDestroyOnLoad・ScriptableObjectのいずれかの仕組みを使う必要があります。
Q. Build Settingsに登録しないとどうなりますか?
A. 実行時に該当のシーンを呼び出すコードが動いても、シーンが読み込まれずエラーやコンソール上の警告が出ます。シーンファイルを新しく作成したら、必ずBuild Settingsへの登録を行う習慣をつけましょう。
Q. プログラミング未経験でも、AIを使えばUnityアプリは作れますか?
A. 簡単な試作レベルであれば十分可能です。「タイトル画面からスタートボタンでメイン画面に切り替えたい」のように、実現したいことを言葉で伝えるだけで、AIがUnityの標準的な実装パターンに沿ってコードを生成してくれます。ただし、本格的な製品化やUnityエディタ自体の操作は、ある程度慣れが必要です。
Q. フェードエフェクトは、Unityの標準機能だけで実装できますか?
A. はい、CanvasとImage、CanvasGroupという標準コンポーネントの組み合わせで実装できます。外部アセットを購入しなくても、黒一色のシンプルなフェードであれば標準機能だけで十分対応可能です。
Q. AIに試作を任せた場合、著作権やライセンス面で注意すべきことはありますか?
A. 生成されたコード自体の権利関係に加え、Unity本体の商用ライセンス条件(利用規模に応じたプラン選択)は別途確認が必要です。試作段階から将来の商用展開まで見据えている場合は、早めにUnityの最新ライセンス条件を確認しておくことをおすすめします。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理へのお問い合わせ
この記事を読んで気になった方へ。
AI鬼管理の専門スタッフが、御社に最適な
業務自動化プランを無料でご提案します。




