ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
シーンとは
Unity におけるシーン (Scene) とは、ゲームを構成する個々の場面・画面状態を表すデータ単位です。タイトル画面・ステージ 1・ステージ 2・ショップ画面・ゲームオーバー画面など、ユーザーから見て1 つの独立した世界がシーンに対応します。
シーンはGameObject の集合と、そのプロパティ・コンポーネント設定を全て保存したファイルで、拡張子は .unity です。Assets フォルダ配下の任意の場所に置けます(一般的には Assets/Scenes/)。
シーンに含まれるもの
- GameObject の階層構造(Hierarchy ウィンドウに見えるもの全て)
- 各 GameObject の Transform / Component(位置、回転、コライダー、スクリプト等)
- ライト(Directional Light / Point Light など)
- カメラ
- ベイク済 Lighting データ(ライトマップ)
- NavMesh データ
- シーンの環境設定(Skybox、Fog、Ambient Light、Lighting Settings)
シーンの新規作成と保存
| 操作 | 手順 |
|---|---|
| 新規シーン作成 | File → New Scene、テンプレートを選択(Basic / 3D / 2D / VR / HD-RP / URP) |
| シーンを保存 | File → Save (Ctrl+S)、初回は名前と保存場所を指定 |
| 別名で保存 | File → Save As (Ctrl+Shift+S) |
| シーンを開く | Project ウィンドウで .unity をダブルクリック、または File → Open Scene |
| シーンの追加(Additive) | Project ウィンドウから Hierarchy にドラッグ&ドロップ |
Build Settings への登録
ビルドに含めたいシーンは File → Build Settings → Scenes In Build に追加します。登録されていないシーンは実行時 LoadScene() で読み込めません(インデックス参照のとき)。
File → Build Settings... を開く
↓
Scenes In Build に必要なシーンをドラッグ&ドロップ
↓
順序を整える(インデックス 0 が最初に起動するシーン)
↓
チェックボックスで「ビルドに含む / 含まない」を切替可能
例:
[✓] 0 Assets/Scenes/Title.unity
[✓] 1 Assets/Scenes/Stage1.unity
[✓] 2 Assets/Scenes/Stage2.unity
[✓] 3 Assets/Scenes/GameOver.unity
[ ] 4 Assets/Scenes/DebugRoom.unity ← デバッグ用、本番には含めない
SceneManager API(実行時のシーン切替)
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneTransition : MonoBehaviour
{
// インデックスでロード(同期)
public void LoadStage1ByIndex()
{
SceneManager.LoadScene(1);
}
// 名前でロード(推奨:インデックス変更に強い)
public void LoadStage1ByName()
{
SceneManager.LoadScene("Stage1");
}
// 非同期ロード(読み込み中に進捗表示が可能)
public void LoadStage1Async()
{
var op = SceneManager.LoadSceneAsync("Stage1");
op.completed += _ => Debug.Log("読込完了");
}
// Additive ロード(既存シーンに加算)
public void LoadUIScene()
{
SceneManager.LoadScene("UI", LoadSceneMode.Additive);
}
// シーンのアンロード
public void UnloadUIScene()
{
SceneManager.UnloadSceneAsync("UI");
}
// 現在のシーン情報取得
public void PrintCurrentScene()
{
var scene = SceneManager.GetActiveScene();
Debug.Log($"Name: {scene.name}, Index: {scene.buildIndex}, GO count: {scene.rootCount}");
}
}
LoadSceneMode.Single と Additive の使い分け
| モード | 挙動 | 用途 |
|---|---|---|
| Single (既定) | 既存シーンを全て破棄して新シーンをロード | ステージ切替、タイトル → ゲーム |
| Additive | 既存シーンを残して新シーンを追加 | UI / オーディオ / マネージャー / 街の区画ストリーミング |
Additive を活用すると、たとえば「常駐管理シーン」+「現在のステージ」+「共通 UI シーン」 という構成にでき、保守性とロード時間の両方を改善できます。
Multi-Scene Editing(エディタでの複数シーン編集)
Hierarchy で複数のシーンを同時に開いて編集できます。役割分担の例:
- Lighting シーン: ライト / Sky / Reflection Probe など見た目専用
- Logic シーン: GameManager / SaveLoad / Audio など機能専用
- Level シーン: 床 / 壁 / 障害物などのレベル本体
- UI シーン: HUD / メニュー
これにより、複数人開発時のマージコンフリクトが発生しにくくなります(同じシーンを 2 人で編集するとシーンファイル全体が衝突する)。
シーン間のデータ受け渡し
シーン切替時、デフォルトでは全 GameObject が破棄されます。情報を持ち越すには以下の方法があります。
// 方法1: DontDestroyOnLoad
public class GameManager : MonoBehaviour
{
public static GameManager Instance { get; private set; }
public int score;
void Awake()
{
if (Instance != null) { Destroy(gameObject); return; }
Instance = this;
DontDestroyOnLoad(gameObject); // ★ シーン切替でも破棄されない
}
}
// 方法2: ScriptableObject に保存
[CreateAssetMenu]
public class PlayerData : ScriptableObject
{
public int hp;
public int gold;
// → エディタで作成しておけばシーン間で共有可能
}
// 方法3: PlayerPrefs / セーブファイル
PlayerPrefs.SetInt("Score", 12345);
PlayerPrefs.Save();
// 次のシーンで
int score = PlayerPrefs.GetInt("Score", 0);
ストリーミングロード(大規模ワールド)
オープンワールド系では、プレイヤー周辺だけ動的にロード/アンロードするシーンストリーミングが必要です。Unity では以下のアプローチがあります。
- Addressables: アセットの遅延ロード / 動的ダウンロード
- Scene Streaming: 自前で Additive ロード / Unload を制御
- Entities (DOTS) + SubScene: ECS ベースで超大規模ワールドに対応
シーンキー / イベント連携
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneEvents : MonoBehaviour
{
void OnEnable()
{
SceneManager.sceneLoaded += OnSceneLoaded;
SceneManager.sceneUnloaded += OnSceneUnloaded;
}
void OnDisable()
{
SceneManager.sceneLoaded -= OnSceneLoaded;
SceneManager.sceneUnloaded -= OnSceneUnloaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode)
{
Debug.Log($"Loaded: {scene.name} ({mode})");
// BGM を切替、UI を出すなど
}
void OnSceneUnloaded(Scene scene)
{
Debug.Log($"Unloaded: {scene.name}");
}
}
StreamingAssets フォルダとの違い
StreamingAssets はビルド時にそのまま含まれるリソースフォルダで、シーンとは別概念です。動画 / 設定 JSON / 外部 EXE などをビルドに含めて、実行時にパスでアクセスする用途で使います。シーンはあくまで Scene として登録されたゲームオブジェクト構成のデータです。
FAQ
Q: シーンを Build Settings に追加し忘れたままビルドした
A: 実行時に SceneManager.LoadScene("Stage1") が「Scene Stage1 (Build Index: -1) couldn't be loaded」エラーになります。Build Settings の Scenes In Build に追加して再ビルドしてください。
Q: 開発中に一時的に複数シーンを Hierarchy に出している。ビルドはどうなる?
A: Build Settings のチェックボックスで ON のシーンだけがビルドに含まれます。Hierarchy で開いているかは関係ありません。
Q: シーンロード中の進捗バーを作りたい
A: SceneManager.LoadSceneAsync() が返す AsyncOperation.progress(0〜0.9 まで読込、0.9 で activateOnLoad 待ち)を使います。allowSceneActivation = false でアクティブ化を遅延させられます。
Q: シーンのバージョン管理(Git)でコンフリクトが頻発する
A: Edit → Project Settings → Editor で Asset Serialization Mode を Force Text にし、シーンを役割で分割(Multi-Scene Editing)、UnityYAMLMerge を有効化すると改善します。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- UE5のEvent Tickノードの使い方|毎フレーム処理とDelta Seconds 2026-06-13 13:26:37
- UE5のレベルブループリントでキャラクターをスポーンさせる方法 2026-06-13 13:26:37
- UE5のビューポートの使い方|視点操作・ビューモード・投影の基本 2026-06-13 13:26:36
- Reactのよくあるエラーと対処まとめ|環境構築・npm関連 2026-06-13 13:26:36
- UE5でAI Move ToがBlockedで失敗する原因と対処方法|NavMesh確認 2026-06-13 13:26:36
- C++のコンパイルと実行方法|g++の使い方とオプション 2026-06-13 13:26:35
- UE5のWorld Compositionとは|サブレベルによる大規模ワールドと非推奨化 2026-06-13 13:26:35
- .protoのgo_packageオプションとは|Goコード生成時のパッケージ指定 2026-06-13 13:26:34
- C++の開発環境構築|コンパイラとIDEの選び方・Hello World 2026-06-13 13:26:34
- C++の関数まとめ|標準入出力(printf・cout・cin)と関数の基本 2026-06-13 13:26:33
- gRPCクイックスタート|.proto定義からサーバ・クライアント実装まで 2026-06-13 13:26:33
- C#・Visual Studioのよくあるエラーと対処まとめ 2026-06-13 13:26:33
- UE5でSet Input Mode UI Onlyを解除する方法|Game Onlyに戻す 2026-06-13 13:26:32
- UE5のアウトライナーとは|アクターの一覧・整理・親子付け 2026-06-13 13:26:32
- UE5エディタの自動保存の頻度を変更する方法|Auto Save設定 2026-06-13 13:26:31
コメントを削除してもよろしいでしょうか?