Unity

【Unity】Game Creator 2 Dialogue(ダイアログ・会話)完全解説

【Unity】Game Creator 2 Dialogue(ダイアログ・会話)完全解説

当サイトを閲覧いただきありがとうございます。

本記事では、Game Creator 2のモジュールのひとつである「Dialogue」(ダイアログ・会話システム)について詳しく解説します。

DialogueはNPCとの会話・分岐選択肢・ランダム返答・ポートレート/表情・スキン切替・タイムライン付きアニメ連携・動的値差し込みまでを備えた包括的な会話システムです。

公式ドキュメント:Game Creator 2 Documentation


Dialogueとは

  • 分岐会話システム。NPCとのトーク、選択肢、条件分岐、表情変化、ポートレート表示、タイピング演出などを一式でまかなう
  • 会話ツリーはノード列として構成(Text/Choices/Randomの3種)
  • Actor(話者)アセットでNPCのキャラ設定を再利用
  • Skin(UIテーマ)を差し替えることで、フキダシ風・SMS風・ピクセル・Cyberpunk風などに一瞬で変更可能

導入

  1. Asset Storeから Dialogueモジュール を購入
  2. Window > Package Manager からインストール
  3. Game Creator > Install... で以下サンプルが選べる:
    • Examples:ユースケース別のサンプルシーン集
    • Skin Default:シンプルな標準スキン
    • Skin Message:SMS/チャット風
    • Skin Pixel:ファンタジー向けフロート表示
    • Skin Cyberpunk:グリッチ付きHUD風
  4. ExamplesはSkin全種に依存(自動解決)

Dialogueコンポーネント

作成

  • Hierarchy右クリック → Dialogue > Dialogue
  • または既存GameObjectに Add Component > Dialogue

会話テキストはすべてこのコンポーネント内に書き込まれ、複数のパネルを展開/収納して編集します。


Anatomy of a Dialogue(4パネル構成)

Top Toolbar

  • 左:新規ノード追加(Text/Choice/Random)
  • Shiftを押しながらクリックすると「現ノードの子/兄弟」の扱いを反転
  • 右上:歯車ボタン(Settings左サイドバー開閉)/四角ボタン(Inspector右サイドバー開閉)

Settings サイドバー

  • Configuration:使用するSkin/タイムスケールの影響を受けるかなど
  • Actors:会話で使われるActorの一覧(自動収集)。各Actorにシーン参照をバインド
  • Editor:エディタ表示の見た目(ゲーム挙動には無影響)

Conversations(中央メイン)

会話フローのツリー表示です。上から順に、子ノード優先で評価され、終わったら次の兄弟へ進みます。

  • ノードをダブルクリックすると右Inspectorを開閉+フォーカス
  • ノードをドラッグ&ドロップで順序変更。他ノードの上にドロップすると子ノードになる

Inspector サイドバー

選択中ノードの詳細を編集します。主なフィールド:

  • Type:Text/Choice/Random
  • Conditions:このノードを実行するための条件
  • Portrait:ポートレート表示位置(None/Primary/Alternate)
  • Actor:話者Actorアセット。Expressionsがあれば表情も選択
  • Text:表示テキスト(リッチテキスト可)
  • Add Value…:動的値(後述)
  • Audio:ボイス音声クリップ
  • Animation:Animation Timeline(後述)
  • On Start / On End:表示開始時・終了時に走る命令
  • Duration:表示時間。以下のいずれか
    • Until Interaction:ユーザー入力まで待機(デフォルト)
    • Timeout:指定秒
    • Audio:音声クリップの終了まで
    • Animation:アニメクリップの終了まで
  • Jump:次に進むノード指定。タグへジャンプ/Dialogue終了なども選べる

Audio/AnimationをDurationに選びつつアセット未設定だと、即スキップされます。


Nodes(ノード)

Text(最も基本)

画面にテキストを1行表示するノードです。子ノードを持てます(親Textの条件が合えば子も評価)。<color> <size> などのリッチテキストタグが使用可能です。

Choices

プレイヤーに選択肢を提示するノードです。子ノード(通常はText)が自動的に選択肢になります。

主なオプション:

  • Hide Unavailable:条件不成立の選択肢を隠す/グレーアウト
  • Hide Visited:一度選んだ選択肢を消す
  • Skip Choice:選択肢を選んだ後、そのText本体を読み上げずに飛ばす
  • Shuffle Choices:並び順をランダム化
  • Timed Choice:制限時間を付ける
    • Duration:制限秒
    • Timeout:タイムアウト時に選ぶ先(ランダム/先頭/末尾)

Random

ランダム抽選で1つの子ノードを選びます(ユーザー入力なし)。

  • Allow Repeat:同じ選択が連続可能か

用途:商人の挨拶を毎回違わせる等。


Dynamic Values(動的値差し込み)

テキストに変数・ステータス・ローカル値を埋め込む仕組みです。

Local Dynamic Values

  • ノード単位で設定。インデックス(0始まり)で参照
  • テキスト中で {0} と書くとindex 0の値に置換
  • 個別に Bold / Italic / Color を付与可能

Global Dynamic Values

  • プロジェクト全体で共通。Game Creator > Settings > Dialogue で作成
  • 各エントリは Key(一意ID)を持ち、テキスト中で {player-name} のようにキーを波括弧で囲む
  • Bold / Italic / Color指定可

プレイヤー名など、全Dialogueで共通の値はGlobalを使うのが効率的です。


Animation Timeline

各ノードの Animation フィールドは単なるGesture再生ではなく、タイムラインで任意の時刻に命令を差し込めるツールです。

  • Animation Clipをドロップすると、下にプレビュー+シーケンサUIが現れる
  • Markers(菱形):タイムライン上の特定点で命令を発火。ドラッグで位置調整可
  • + ボタンで新規Markerを現在位置に追加、- で選択中Markerを削除

重要:Dialogue行がアニメ終了前にスキップされると、残りのMarkerは実行されません。必ず走らせたい処理は On Start / On End に置いてください。


Tags(ノード識別子)

  • ノードを右クリック → Tag... で名前を付与
  • 用途1Jump フィールドでタグへの飛び越しによるループ会話
  • 用途2:Condition Tag Visited で「その行に到達済みか」を判定

タグ名はDialogue内で一意、かつ英数字(スペース・記号不可)です。


Actors(話者)とExpressions(表情)

Actorアセット

Create > Game Creator > Dialogue > Actor で作成します。

  • Name / Description:表示名と説明(任意)
  • Expressions:表情リスト。怒り・驚き・混乱などを列挙
  • Effects
    • Typewriter:1文字ずつ表示。Frequency で秒当たり文字数を指定
    • Gibberish:ボイスのないキャラに「それっぽい音」を鳴らす。ピッチ/スピードをランダム化
  • Optional Skin:Actor個別のSpeech Skin上書き(例:ロボットキャラだけ別フォント/フキダシ)
  • Default Portrait:ポートレート既定位置

Expressions(表情)

Actorの子要素として追加します。

  • ID:一意名
  • Sprite:ポートレート画像
  • Speech Skin:任意。Actor設定を上書きする
  • On Start / On End:表情切替時の命令(Gesture再生・State遷移など)

On Endは次のExpression切替時に呼ばれるため、同じ表情で連続発話する間は発火しません。


Skins(スキン)

Dialogue Skin(テーマ)

会話UI全体の見た目です。Settings サイドバーからドラッグで設定します。

主な構成:

  • Prefab:UIプレハブ(Canvas + Dialogue UIコンポーネント)
  • Animations:開始/ループ/終了時のアニメ
  • Sound Effects:Start(開始時)、Finish(終了時)、Select(選択肢ホバー)、Submit(選択肢送信)
  • Nodes(2.2.8以降):Text/Choice/Randomの既定値

Speech Skin(フキダシ)

話者1人分のフキダシUIです。Dialogue Skinが参照しますが、Actor単位で上書きも可能です。

  • Prefab:UIスキーマ
  • Animations:開始時・ループの指定。毎行再生/同じ話者連続時は省略 なども選べる
  • Sound Effects:行開始時/終了時の音
  • Override Log:ログUIのレイアウト上書き

User Interface(カスタムスキンの作り方)

公式推奨:既存スキンを複製して改変するのが最短ルートです。

Custom Dialogue Skinの最低構成

ルートGameObjectに:

  • Canvasコンポーネント
  • Dialogue UI コンポーネント(2フィールド)
    • Speech:Speech Skinをインスタンス化するRectTransform
    • Default:規定のSpeech Skin

任意追加コンポーネント

コンポーネント役割
Dialogue Unit Timer UITimed Choiceのカウントダウン表示
Dialogue Unit Choices UI選択肢の配置・見た目
Dialogue Unit Logs UI過去ログ表示
Dialogue Unit Portraits UI現話者のポートレート表示

Custom Speech Skinの最低構成

ルートに Speech UI コンポーネント。主フィールド:

  • Active:発話中だけ表示するGameObject参照
  • Actor Name / Actor Description:対応Text参照(自動更新)
  • Active Portrait / Portrait Image:ポートレート表示切替とSprite反映
  • Text:本文のTextコンポーネント(必須)
  • Skip:「次へ」カーソル用GameObject

Visual Scripting リファレンス

Instructions(4)

命令機能主なパラメータ
Play DialogueDialogueを再生Dialogue/Wait to Finish
Stop Dialogue再生中のDialogueを停止Dialogue
Choice Index選択肢をインデックス(1始まり)で選ぶIndex
Skip Line現在行を終了/次行へ進めるSpeech UI

Conditions(2)

条件判定
Dialogue Played指定Dialogueが再生されたか
Tag Visited指定Dialogue内のTagが通過済みか

Events(4)

イベント発火タイミング
On Start DialogueDialogueの再生開始時
On Finish DialogueDialogueの再生終了時
On Start Dialogue Line1行の表示開始時
On Finish Dialogue Line1行の表示終了時

Tipsと注意点

  • Jumpの扱い:Jump先のノードtagが存在しない/タイポだとエラー。早めに確認してください
  • Skip Choice = ON「言わずに進む」モード。UIに選択肢としては出すが、本文Textは読まれません
  • Single Choiceの自動選択:選択肢が1つしか条件成立しないとプレイヤー操作が省略されます
  • Duration = Audio/Animationで空:即スキップされるため、必ずアセットを入れてください
  • Animation Markerはスキップで失効:重要な処理はOn Start/On Endに置く
  • Expressionの On Endタイミング:同じ表情のまま続く間は呼ばれません。終了時にリセットしたいなら最後に別表情を明示的に挟む
  • TypewriterとGibberish:組み合わせると「古典的RPG風」が簡単に作れます
  • Global Dynamic Valuesは設定画面経由Game Creator > Settings > Dialogue タブで全プロジェクト共通に管理
  • Skinsはインストールで4種同梱:近いものをコピーして改変するのが最短です
  • Tag名にスペース/記号は不可hello-world のようにハイフンつなぎが安全

実践的な使い方 ― やりたいこと別の構成ガイド

NPCに近づいて話しかけると会話が始まる

NPC側にTrigger(Event: On Interact)を配置し、Play Dialogue 命令で再生します。Wait to Finish をONにすると会話終了まで後続の処理が待機します。

プレイヤーに選択肢を提示し、選んだ内容で分岐する

Choice ノードの子に Text ノードを複数配置します。各選択肢TextにConditionを付けると、条件未達の選択肢を非表示/グレーアウトにできます。

時間制限付きの選択肢(タイムドチョイス)

Choiceノードの Timed Choice をONにし、DurationとTimeout(時間切れ時の挙動)を設定します。

NPCがランダムに違う台詞で挨拶する

Random ノードの子に複数のTextを配置するだけです。Allow Repeat をOFFにすると同じ台詞が連続しません。

Statsと連動した条件付き選択肢

各選択肢TextノードのConditionsに Compare Stat を追加します(例:str >= 15)。条件不成立なら子ノードも含めてスキップされます。

会話中にプレイヤー名などの動的な値を表示する

ローカル:ノード下の「Add Value…」でインデックスを追加し、本文に {0} と記述。 グローバル:設定画面でKeyを定義し、本文に {key-name} と記述。

会話中にキャラクターの表情を切り替える

ActorアセットのExpressionsリストに表情を追加し、各ノードのInspectorでExpressionをドロップダウンから選択します。On Startに表情のState開始、On EndにState停止を入れるのが定石です。

キャラクターごとにテキスト表示速度を変える

ActorアセットのTypewriterセクションの Frequency(秒当たり表示文字数)を調整します。Gibberishと組み合わせると古典的RPG風の演出が簡単に作れます。

特定キャラだけ見た目の異なる吹き出しにする

Actorアセットの Optional Skin フィールドに専用のSpeech Skinを設定します。

会話中に特定タイミングでアニメーションイベントを挟む

AnimationフィールドにAnimation Clipをドロップし、タイムライン上のMarkerで任意のタイミングにInstructionを配置します。

会話のJumpでループ会話を作る

ループ先のノードにTagを付け、最後のノードのJumpにTag名を指定します。Tag Visited で初回/2回目以降の分岐も可能です。

ボイス付き会話でクリップ終了まで自動待機する

AudioフィールドにボイスのAudioClipを設定し、Durationを Audio に選択します。


公式リンク


まとめ

本記事では、Game Creator 2のDialogueモジュールについて解説しました。如何だったでしょうか。

Dialogueモジュールは分岐会話・選択肢・ランダム返答・表情切替・タイプライター演出・動的値差し込みまで、ゲームの会話演出に必要な機能を一式備えています。

特にSkin(UIテーマ)の差し替えで見た目を一瞬で変更できる点と、Actor・Expressionの仕組みでキャラクターごとの個性を簡単に表現できる点が大きな強みです。

全記事一覧 ― Game Creator 2 完全ガイド シリーズ総合案内senkohome.com/gamecreator2-series-index/

それでは次の記事も閲覧いただけると幸いです。