「Unityで選択肢と分岐を作りたい」
「マルチエンディングを実装したい」
Unityで選択肢分岐システムを実装すれば、プレイヤーの選択によって物語が変わるゲームが作れます。
✨ この記事でわかること
- Unityで選択肢分岐システムを実装する方法
- フラグ管理の仕組みと実装方法
- ルート分岐の作り方
- マルチエンディングの実装方法(コード例付き)
- 高度な分岐システムの設計方法

選択肢分岐システムは、フラグ管理が重要です。まずは基本的な仕組みから理解しましょう。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
選択肢分岐システムの基本構造

Unityで選択肢分岐システムを作る基本的な構造を解説します。
所要時間は4時間程度です。
✅ 選択肢分岐システムに必要な要素
- 選択肢ボタン:プレイヤーが選べる選択肢を表示
- フラグ管理:選択肢の結果を記録する仕組み
- 分岐処理:フラグに応じて物語を分岐させる
- エンディング管理:複数のエンディングを管理する
これらの要素を組み合わせれば、選択肢分岐システムが完成します。
フラグ管理の仕組み

フラグ管理は、選択肢分岐システムの中でももっとも重要な土台となる仕組みです。
プレイヤーがどんな選択をしたのか。
どのイベントを経験し、どのキャラクターと関わったのか。
こうした「過去の行動」を記録しておくことで、物語はプレイヤーごとに異なる展開を見せるようになります。
たとえば序盤で村人を助けたかどうかによって、終盤で仲間として駆けつけてくれるか、誰にも助けてもらえないかが変わる──。
この選択の積み重ねを覚えておく役割を担うのが「フラグ管理」です。
フラグがなければ、「さっき助けたはずのキャラクターが、なぜか初対面の反応をする」といった違和感のあるゲームになってしまいます。
ここではまず、ゲーム全体で使い回せるシンプルで拡張しやすいフラグ管理クラスを作成します。
ステップ1:フラグ管理クラスを作成する(所要時間:1時間)
最初に、選択結果を一元管理するためのクラスを用意します。
このクラスはシーンをまたいでも保持され、どこからでも参照できる設計です。
以下のコードをそのままコピーして使用してください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
using System.Collections.Generic; using UnityEngine; public class FlagManager : MonoBehaviour { private static FlagManager instance; private Dictionary<string, bool> flags; public static FlagManager Instance { get { if (instance == null) { instance = FindObjectOfType(); if (instance == null) { GameObject obj = new GameObject("FlagManager"); instance = obj.AddComponent(); } } return instance; } } void Awake() { if (instance == null) { instance = this; DontDestroyOnLoad(gameObject); flags = new Dictionary<string, bool>(); } else { Destroy(gameObject); } } public void SetFlag(string flagName, bool value) { flags[flagName] = value; Debug.Log($"フラグ設定: {flagName} = {value}"); } public bool GetFlag(string flagName) { if (flags.ContainsKey(flagName)) { return flags[flagName]; } return false; } public void ClearFlags() { flags.Clear(); } } |
このクラスでは、「フラグ名」と「true / false」の組み合わせをDictionaryで管理しています。
SetFlag()で選択結果を記録し、GetFlag()でその結果を参照する、という非常にシンプルな構造です。
シングルトンにしているため、どのスクリプトからでも同じフラグ情報を扱える点が特徴です。
ステップ2:フラグを使って選択結果を判定する(所要時間:30分)
次に、実際のゲーム内でフラグを使う例を見てみましょう。
たとえば、プレイヤーが「村人を助ける」という選択肢を選んだ場合、その結果を次のように記録します。
|
1 2 |
// 村人を助けた場合 FlagManager.Instance.SetFlag("saved_villager", true); |
そして、後のイベントやエンディング判定で、このフラグを参照して物語を分岐させます。
|
1 2 3 4 5 6 7 8 9 |
// 過去の選択によって展開を分岐 if (FlagManager.Instance.GetFlag("saved_villager")) { Debug.Log("村人が仲間として加わった!"); } else { Debug.Log("誰も助けてくれなかった…"); } |
このようにフラグを使えば、プレイヤーの選択が後の展開やエンディングに影響する仕組みを簡単に作れます。
フラグ管理ができるようになると、「選択肢を増やす」「分岐を複雑にする」「マルチエンディングを作る」といった発展もスムーズになります。
次の章では、このフラグを使って実際に物語のルートを分岐させる方法を解説します。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
ルート分岐の作り方

フラグに応じて物語を分岐させる方法を解説します。
所要時間は2時間程度です。
ステップ1: 分岐管理クラスの作成(所要1時間)
以下のコードをコピペしてください:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
using System.Collections.Generic; using UnityEngine; public class BranchManager : MonoBehaviour { [System.Serializable] public class Branch { public string flagName; public bool flagValue; public int nextDialogueIndex; } [System.Serializable] public class DialogueBranch { public int dialogueIndex; public List branches; } public List dialogueBranches; public int GetNextDialogueIndex(int currentDialogueIndex) { foreach (var dialogueBranch in dialogueBranches) { if (dialogueBranch.dialogueIndex == currentDialogueIndex) { foreach (var branch in dialogueBranch.branches) { if (FlagManager.Instance.GetFlag(branch.flagName) == branch.flagValue) { return branch.nextDialogueIndex; } } } } return currentDialogueIndex + 1; // デフォルトは次のセリフ } } |
コードの説明:
Branch: 分岐条件を定義するクラスDialogueBranch: セリフごとの分岐を定義するクラスGetNextDialogueIndex(): フラグに応じて次のセリフインデックスを返す
ステップ2: 分岐の使用例(所要1時間)
Inspectorで分岐を設定し、以下のコードで使用します:
|
1 2 3 |
// 分岐を取得 int nextIndex = branchManager.GetNextDialogueIndex(currentDialogueIndex); ShowDialogue(nextIndex); |
この手順で、ルート分岐が完成します。
マルチエンディングの実装方法

複数のエンディングを実装する方法を解説します。
所要時間は2時間程度です。
ステップ1: エンディング管理クラスの作成(所要1時間)
以下のコードをコピペしてください:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
using System.Collections.Generic; using UnityEngine; public class EndingManager : MonoBehaviour { [System.Serializable] public class Ending { public string endingName; public List requiredFlags; public int endingSceneIndex; } public List endings; public Ending CheckEnding() { foreach (var ending in endings) { bool allFlagsMet = true; foreach (var flagName in ending.requiredFlags) { if (!FlagManager.Instance.GetFlag(flagName)) { allFlagsMet = false; break; } } if (allFlagsMet) { return ending; } } return null; } public void ShowEnding(Ending ending) { Debug.Log($"エンディング到達: {ending.endingName}"); // エンディングシーンに遷移 UnityEngine.SceneManagement.SceneManager.LoadScene(ending.endingSceneIndex); } } |
コードの説明:
Ending: エンディング情報を定義するクラスCheckEnding(): 条件を満たすエンディングをチェックするShowEnding(): エンディングを表示する
ステップ2: エンディングの使用例(所要1時間)
以下のコードでエンディングをチェックします:
|
1 2 3 4 5 6 |
// エンディングをチェック EndingManager.Ending ending = endingManager.CheckEnding(); if (ending != null) { endingManager.ShowEnding(ending); } |
この手順で、マルチエンディングが完成します。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
高度な分岐システムの設計方法

より高度な分岐システムを設計する方法を解説します。
所要時間は3時間程度です。
複数条件の分岐
複数のフラグを組み合わせて分岐させる方法です。
以下のコードをコピペしてください:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public bool CheckMultipleFlags(List flagNames, bool allRequired = true) { foreach (var flagName in flagNames) { bool flagValue = FlagManager.Instance.GetFlag(flagName); if (allRequired && !flagValue) { return false; // すべてのフラグが必要な場合 } if (!allRequired && flagValue) { return true; // いずれかのフラグがあればOK } } return allRequired; // すべてのフラグが条件を満たした場合 } |
条件分岐の可視化
分岐を可視化するには、ノードエディタを使う方法があります。
ただし、本格的なノードエディタの実装は複雑です。
もっと高度なシステム設計を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。
よくある質問

あなたのオリジナルゲーム、今年こそ完成させませんか?
RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。
実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。
まとめ

Unityで選択肢分岐システムを実装する方法を解説しました。
合計4時間で、基本的な選択肢分岐システムが完成します。
フラグ管理が重要で、プレイヤーの選択を記録して物語を分岐させます。
まずは基本的なフラグ管理から始めて、段階的に機能を追加していきましょう。
✅ 今日から始める3ステップ
- STEP1:フラグ管理クラスを作成(所要1時間)
- STEP2:ルート分岐を実装(所要2時間)
- STEP3:マルチエンディングを実装(所要2時間)
もっと高度なシステム設計を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。
ノベルゲーム制作に特化した講座も用意されています。
あなたのペースで、少しずつ進めていけば大丈夫です。
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる



コメント