【Dialogue System for Unity】の使い方~その3(Topdown Engineに組み込む)~

会話のサンプル画面 TopDownEngine
スポンサーリンク

前提条件

今回はTopdown Engineに組み込むための方法になります。そのためTopdown Engineのアセットがないと意味がないため、前提条件としてTopdown Engineは事前にImport済みの状態で説明したいと思います。

前書き

第1回、第2回とDialogue System for Unityの基本的な操作方法と会話の実装方法について紹介しましたが、今回はいままで作成した会話をどのようにTopdown Engineに組み込むかについて紹介していこうと思います。Dialogue System for Unityをまだ触ったことがなく使い方が分からない場合は第1回、第2回をご覧になってから今回の記事を見ていただけるとより理解しやすいかなと思います。

TopDown Engineに組み込む方法のサンプルサイト

Dialogue System for Unityでは様々なシステムに適応するためのサンプルがすでに存在します。Topdown Engineも同様にDialogue System for Unityのドキュメントの中にTopdown Engineへの組み込み方が記載されているので、以下のURLから対象のページを見ていただくとよいかと思います。今回は以下サンプルサイトを見ながら設定方法を紹介していこうと思います。

Dialogue System for Unity: TopDown Engine Support

サンプルファイルを取り込むことで以下のことができるようになります。

TopDown Engine Support ファイルのImport

Dialogue System for UnityをImportするとTopdown Engineを組み込むためのサポートファイルが存在します。アセット上で「Topdown Engine Support」と検索していただくと以下の2ファイルが見つかるはずです。

Topdown Engine Supportの検索結果

上記2つの「Topdown Engine Support」をダブルクリックするとPackage Import画面が表示されるためすべてのファイルをImportしてください。

Topdown Engine Supportのインポートパッケージその1
Topdown Engine Supportのインポートパッケージその2

2つのファイルをImportすると以下のようにフォルダが2つ生成されます。

Topdown Engine Supportのインポートパッケージをインポートした後

この中にあるExampleフォルダ中身がサンプルファイルになります。

Pixel Crushers -> Dialogue System -> Third Party Support ->
TopDown Engine Support -> Example -> DS TopDown Example.unity

Dialogue System for UnityがTopdown Engineでどのように設定されているか見てみましょう。

Exampleファイルの内容

今回も2D設定を元に説明していきます。DS TopDown Example.unityを開いてみてください。

開くとKoaraDungeonと同じようなシーンになっていますが、スタート位置にDialogue Systemが実装されたKoaraNinjaが3人いる状態で始まります。それぞれの作りについてみてみましょう。

DS TopDown Example.unityを開いたときの初期画面

左下のKoalaNinja

Ninja - Conversationのヒエラルキー

Topdown Engineに出てくるKoalaNinjaとさほど違いはありませんが「Conversation Trigger」というDialogue Systemを呼び出すためのオブジェクトが新しく追加されています。

Conversation Triggerのインスペクター

インスペクターを見ると

  • Dialogue System Trigger
  • Use On Button Activated

の2つのスクリプトが設定されていることが分かります。

Dialogue System Triggerについて

Dialogue System を呼び出すための設定がされています。重要なところとしてTrigger条件が「On Use」になっています。これは「Dialogue System Triggerが呼び出された時に実行される」という意味になるため、何かしらの条件をもってDialogue System Triggerを呼び出す必要があります。

UseOnButtonActivatedについて

Topdown Engineで実装されているButtonActivatedスクリプトと見た目上は同じ動きをするスクリプトとなっています。ただし、UseOnButtonActivatedの実装を見てみると

SendMessage(“OnUse”, actor);

という記述があるため、「OnUseの処理を呼び出すための処理」として実装されていることが分かります。

簡単にまとめると

Dialogue System TriggerのTriggerをOnUse」にして「UseOnButtonActivatedを付与する」と「特定の位置でアクションボタンスペースを押すとDialogueSystemが実行される」という動きをすることが分かります。Topdown Engineに組み込む方法としては上記が一番簡単かなと思います。

右下のKoalaNinja

Ninja - Quest Giverのヒエラルキー

左下のKoaraNinjaと同様に「Conversation Trigger」オブジェクトが付与されていることが分かります。違いとしてはDialogue System Databaseで指定している会話の内容が異なるだけでほかは同じ内容であるため今回は省略したいと思います。

上のKoalaNinja

Ninja - Barkのヒエラルキー

上にいるKoaraNinjaは他2人と異なり、「Bubble Template Standard Bark UI」を使用しています。これは画面上に表示するためのサンプルのためプレイヤーとの会話をするための処理ではありません。このNinjaの場合はプレイヤーと会話するというよりはひたすらポップアップでメッセージを出す動きをします。

では、どこでポップアップメッセージを出す機能を実装しているかというと「Ninja – Bark」オブジェクトの中に「DialogueActor」と「BarkOnIdle」スクリプトがあります。この2つのスクリプトを付与することでポップアップメッセージの表示内容などを指定することができます。

表示内容などはDialogue System Databaseなどを見てみると、ぐるぐるメッセージを回していることが分かります。

まとめ

今回はDialogue System for UnityをTopdown Engineに組み込む方法について紹介しました。

今回はサンプルページの方法そのままのやり方を紹介しましたがこちらについてもあくまで一例になります。例えば今回紹介した「UseOnButtonActivated」を使ってDialogue Systemを実行していますが、このスクリプトだけだと「OnUse」の時にしか使えないデメリットがあります。別のタイミングでDialogue Systemを使いたい場合はTopDown Engineにある「ButtonActivated」を拡張するなどして適宜必要な処理を作っていく必要があるかなと思います。

とはいえ、今回紹介した内容を流用することでTopDown Engineに簡単に組み込むことができるのでDialogue System for Unityを持っている方は一度試してみてはいかがでしょうか?

次回はDialogue System for Unityにあるテンプレートについて紹介してこうと思います。

コメント

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