Unityで選択肢と分岐を作るには?フラグ管理とマルチエンディングの実装方法

ノベルゲームの作り方

「Unityで選択肢と分岐を作りたい」

「マルチエンディングを実装したい」

Unityで選択肢分岐システムを実装すれば、プレイヤーの選択によって物語が変わるゲームが作れます。

この記事でわかること

  • Unityで選択肢分岐システムを実装する方法
  • フラグ管理の仕組みと実装方法
  • ルート分岐の作り方
  • マルチエンディングの実装方法(コード例付き)
  • 高度な分岐システムの設計方法
ゲーム開発講師
ゲーム開発講師

選択肢分岐システムは、フラグ管理が重要です。まずは基本的な仕組みから理解しましょう。

ゲーム制作をゼロから学びたいあなたへ
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる
ゲームを「遊ぶ側」から「作る側」へ

あなたのオリジナルゲーム、今年こそ完成させませんか?

RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。

Unity入門の森|永久会員チケット

永久会員チケット|Unity入門の森

全講座ラインナップを見てみる

実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。

選択肢分岐システムの基本構造

選択肢分岐システムの基本構造

Unityで選択肢分岐システムを作る基本的な構造を解説します。

所要時間は4時間程度です。

選択肢分岐システムに必要な要素

  • 選択肢ボタン:プレイヤーが選べる選択肢を表示
  • フラグ管理:選択肢の結果を記録する仕組み
  • 分岐処理:フラグに応じて物語を分岐させる
  • エンディング管理:複数のエンディングを管理する

これらの要素を組み合わせれば、選択肢分岐システムが完成します。

フラグ管理の仕組み

フラグ管理の仕組み

フラグ管理は、選択肢分岐システムの中でももっとも重要な土台となる仕組みです。

プレイヤーがどんな選択をしたのか。
どのイベントを経験し、どのキャラクターと関わったのか。

こうした「過去の行動」を記録しておくことで、物語はプレイヤーごとに異なる展開を見せるようになります。

たとえば序盤で村人を助けたかどうかによって、終盤で仲間として駆けつけてくれるか、誰にも助けてもらえないかが変わる──。

この選択の積み重ねを覚えておく役割を担うのが「フラグ管理」です。

フラグがなければ、「さっき助けたはずのキャラクターが、なぜか初対面の反応をする」といった違和感のあるゲームになってしまいます。

ここではまず、ゲーム全体で使い回せるシンプルで拡張しやすいフラグ管理クラスを作成します。

ステップ1:フラグ管理クラスを作成する(所要時間:1時間)

最初に、選択結果を一元管理するためのクラスを用意します。

このクラスはシーンをまたいでも保持され、どこからでも参照できる設計です。

以下のコードをそのままコピーして使用してください。

このクラスでは、「フラグ名」と「true / false」の組み合わせをDictionaryで管理しています。

SetFlag()で選択結果を記録し、GetFlag()でその結果を参照する、という非常にシンプルな構造です。

シングルトンにしているため、どのスクリプトからでも同じフラグ情報を扱える点が特徴です。

ステップ2:フラグを使って選択結果を判定する(所要時間:30分)

次に、実際のゲーム内でフラグを使う例を見てみましょう。

たとえば、プレイヤーが「村人を助ける」という選択肢を選んだ場合、その結果を次のように記録します。

そして、後のイベントやエンディング判定で、このフラグを参照して物語を分岐させます。

このようにフラグを使えば、プレイヤーの選択が後の展開やエンディングに影響する仕組みを簡単に作れます。

フラグ管理ができるようになると、「選択肢を増やす」「分岐を複雑にする」「マルチエンディングを作る」といった発展もスムーズになります。

次の章では、このフラグを使って実際に物語のルートを分岐させる方法を解説します。

ゲーム制作をゼロから学びたいあなたへ
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる

ルート分岐の作り方

ルート分岐の作り方

フラグに応じて物語を分岐させる方法を解説します。

所要時間は2時間程度です。

ステップ1: 分岐管理クラスの作成(所要1時間)

以下のコードをコピペしてください:

コードの説明:

  • Branch: 分岐条件を定義するクラス
  • DialogueBranch: セリフごとの分岐を定義するクラス
  • GetNextDialogueIndex(): フラグに応じて次のセリフインデックスを返す

ステップ2: 分岐の使用例(所要1時間)

Inspectorで分岐を設定し、以下のコードで使用します:

この手順で、ルート分岐が完成します。

マルチエンディングの実装方法

マルチエンディングの実装方法

複数のエンディングを実装する方法を解説します。

所要時間は2時間程度です。

ステップ1: エンディング管理クラスの作成(所要1時間)

以下のコードをコピペしてください:

コードの説明:

  • Ending: エンディング情報を定義するクラス
  • CheckEnding(): 条件を満たすエンディングをチェックする
  • ShowEnding(): エンディングを表示する

ステップ2: エンディングの使用例(所要1時間)

以下のコードでエンディングをチェックします:

この手順で、マルチエンディングが完成します。

ゲーム制作をゼロから学びたいあなたへ
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる

高度な分岐システムの設計方法

高度な分岐システムの設計方法

より高度な分岐システムを設計する方法を解説します。

所要時間は3時間程度です。

複数条件の分岐

複数のフラグを組み合わせて分岐させる方法です。

以下のコードをコピペしてください:

条件分岐の可視化

分岐を可視化するには、ノードエディタを使う方法があります。

ただし、本格的なノードエディタの実装は複雑です。

もっと高度なシステム設計を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。

よくある質問

Unity選択肢分岐のよくある質問

Q: フラグが多すぎて管理が大変な場合は?
A: フラグをカテゴリ別に分類するのがおすすめです。例えば、「選択肢フラグ」「イベントフラグ」「好感度フラグ」などに分けると管理しやすくなります。所要時間は1時間程度で整理できます。
Q: 分岐が複雑になりすぎた場合は?
A: 分岐を簡略化するか、ノードエディタを使う方法があります。ただし、本格的なノードエディタの実装は複雑です。もっと高度なシステム設計を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。
Q: セーブ機能と連携させるには?
A: フラグをセーブデータに含めれば、セーブ機能と連携できます。PlayerPrefsやJSONファイルにフラグを保存する方法があります。所要時間は2時間程度です。
Q: もっと高度な分岐システムを学びたい場合は?
A: もっと高度なシステム設計を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。ノベルゲーム制作に特化した講座も用意されています。
ゲームを「遊ぶ側」から「作る側」へ

あなたのオリジナルゲーム、今年こそ完成させませんか?

RPG・アクション・ホラー…Unityで本格ゲームを作りたい人のための学習サイトです。

Unity入門の森|永久会員チケット

永久会員チケット|Unity入門の森

全講座ラインナップを見てみる

実際に完成するゲームを題材に、
ソースコード・素材・プロジェクト一式をすべて公開。
仕事や学校の合間の1〜2時間でも、
「写経→改造」で自分のゲームまで作りきれる環境です。

まとめ

Unity選択肢分岐のまとめ

Unityで選択肢分岐システムを実装する方法を解説しました。

合計4時間で、基本的な選択肢分岐システムが完成します。

フラグ管理が重要で、プレイヤーの選択を記録して物語を分岐させます。

まずは基本的なフラグ管理から始めて、段階的に機能を追加していきましょう。

今日から始める3ステップ

  • STEP1:フラグ管理クラスを作成(所要1時間
  • STEP2:ルート分岐を実装(所要2時間
  • STEP3:マルチエンディングを実装(所要2時間

もっと高度なシステム設計を学びたい方は、Unity入門の森で実践的なスキルを身につけましょう。

ノベルゲーム制作に特化した講座も用意されています。

あなたのペースで、少しずつ進めていけば大丈夫です。

ゲーム制作をゼロから学びたいあなたへ
Unity入門の森を見る 初心者歓迎!動画×プロジェクト一式で本格ゲーム制作を学べる

コメント

タイトルとURLをコピーしました