公式の使い方解説動画がややわかりにくいので、もっとわかりやすくまとめます。
記事公開後にYouTube動画を作る予定ですが公開はかなり先になると思います。
How to create dialogue Unreal Engine | Dialogue Builder
↑ 公式動画 1時間後超えで詳しい分、すぐにダイアログを表示したい場合には良く分からない。
やりたいこと
トリガーにPlayerが入ったらダイアログビルダーシステムを使って、独り言のように会話を発生させる。
実装方法
1 デモアセットを自分のプロジェクトへ移行
- ダイアログビルダープラグインをエンジンにインストール
- 公式ストアページの 「 デモエディター 」からプロジェクトファイルをダウンロード → 展開してプロジェクトを起動
↓↓↓ デモプロジェクトのダウンロードURL ↓↓↓
DialogueBuilderExampleEditor_StartingFrom427.zip - 自分の作っているゲームのプロジェクトに、コンテンツ → DialogueBuilderRelated フォルダを移行させる。
- 自分の作っているゲームのプロジェクトで、ダイアログビルダープラグインを有効化
1’ ※プロジェクトを移行した場合、変数の型をリセットする必要がある
- 移行したプロジェクトにダイアログビルダープラグインをインストール → 再起動
- キャラクターのブループリントにあるStartDialogueの部分の変数の型がオブジェクトタイプになるので「 Dialogue Builder Object 」タイプに変数をリセットしてピンをつなぎなおす必要がある。
2 ダイアログの表示方法
- コンテントドロワー → 右クリック → ダイアログビルダー → ダイアログビルダーアセットを選択して新規作成。
- ダイアログビルダーのノードを作成していく。
- ダイアログビルダーアセットをコンポーネントととしてPlayerやブループリントアクターにセットする。
- ダイアログを発生させたい人物や位置にコリジョンを設置
- コリジョンを持つブループリントのイベントグラフから、まずEventBeginPlayでウィジェットを作成。ウィジェットを変数化しておく。型はDialogue Widget型でなければならないことに注意。
- ダイアログを発生させたいボックスコリジョンを持つブループリントのEventActorBeginOverlapからダイアログを発生させる処理を作る。
※ Widget Start Dialogueはアセットの制作者さんが作成したデモプロジェクトのウィジェットに含まれているカスタムイベントです。公式動画の35分辺りから解説している部分のなんかややこしい超複雑なノードの部分です。
解読の記録 特に読む必要ないけど記録として置いとく
- ダイアログビルダープラグインをエンジンにインストールして、有効化する
- コンテントドロワーから → 右クリック → ダイアログビルダー → ダイアログビルダーコンポーネントを作成 → 名前をつける(今回は 「 DB_Test 」)
- DB_Testをダブルクリック → ダイアログツリーを編集して会話を作成。
- 会話を発生させるアクターを作る。(動画ではRedキャラクターだが自分のテストでは新規ブループリントアクターを作成してボックスコリジョンとDB_Testを持ったアクターを作成する。)
- PlayerのイベントグラフにStartDialogueイベントを新規作成。Inputにダイアログビルダーオブジェクト型の引数を作る(動画内Current Dialogue) → 変数化して名前をつける → 動画内 CurrentDialogue 変数
- 会話が複数回同時に起動しないようにBool変数「 DialoguePlay 」で制御をする。
- キャラクターが会話中に動かないようにサードパーソンブループリントのムーブメントの入力部分に「 DialoguePlay 」 で分岐をかける。
- 同様にマウスの入力も分岐で会話中は入力しても何も動かないようにする。
- ユーザーインタフェースとしてウィジェットブループリントを作成。(これは配布されているDemoEditorプロジェクト内の「 」から拝借することができる。)
- EventBeginPlayで会話用のウィジェットを作成 → 変数化する
- ウィジェットブループリントのイベントグラフに 「 WidgetStartDialoge 」イベントを作成。Inputの引数にはダイアログビルダーオブジェクト型の引数を作る(動画内Current Dialogue)
- 会話発生時にウィジェットをゲーム画面上に表示する。
- マウスカーソルをONにする
- ゲームモードをUIOnlyに変更
- ウィジェットブループリントのInputダイアログを変数化
- StartDialoge関数を呼び、表示させたい会話のダイアログコンポーネントを接続
- ウィジェットブループリントにProccedDialogueカスタムイベントを作成 → Inputの引数に「 Dialogue Details Struct 」を作成 → 変数名は 「 Dialogue Detail 」
- ウィジェットブループリントのStartDialogeからProceedDialogueを呼び出す。 → RetrunValueをProceedDialogueのInputの引数に接続 → 自動的にMakeArrayで変換される
- ProceedDialogueのInputを変数化
- ダイアログの進行に応じた分岐処理を作成 35:52
コメント