今回のテーマは、「Dialogue System for Unityの使い方 第一回 クイックスタート編」です。
「Dialogue System for Unity」は会話やクエストなどを作ることのできる大人気有料アセットです。
最近、このアセットを購入してあまりこのアセットの使い方を紹介されている記事が見当たらなかったので記事にしてみました。複数回に分けて少しずつ紹介していく予定です。
アセットを購入済みの方は利用方法の参考書として、未購入の方はどんなことができるかの参考資料として見ていただけたら良いかなと思っています。
![](https://assetstorev1-prd-cdn.unity3d.com/key-image/6d898668-1de5-419a-9bf5-48f49c137efd.png?v=1)
クイックスタートについて
ここで紹介しているクイックスタート編は、公式で公開されているチュートリアルを翻訳しながら実際にやってみたものを掲載しています。
公式の動画を見ながらこのサイトを確認することでよりわかりやすい内容になっています。
クイックスタートでは以下の内容を学ぶことができます。
- ダイアログデータベースを作成し、会話を書き込む
- ダイアログマネージャーのGameObjectをセットアップする
- 会話を開始する
- オブジェクトと対話する
- 会話中のプレイヤー操作を無効にする
この記事を最後までやるとこんな感じのことができるようになります。
![](https://mychma.com/wp-content/uploads/2022/04/dialogue1-1.gif)
クイックスタートの公式ドキュメントは以下から確認できます。
開発環境
Unity 2020.3.30f1 を利用して説明しています。
有料アセット「Dialogue System for Unity」
![](https://assetstorev1-prd-cdn.unity3d.com/key-image/6d898668-1de5-419a-9bf5-48f49c137efd.png?v=1)
Dialogue System for Unity クイックスタート編
Package Managerからアセットのインポート
まず、Unityプロジェクトを3Dで作成します。
「Dialogue System for Unity」をPackage Managerからインポートします。
![](https://mychma.com/wp-content/uploads/2022/04/image-175-800x541.png)
全てにチェックを入れた状態でインポートします。インポートすると以下のような画面がでてきます。
![](https://mychma.com/wp-content/uploads/2022/04/image-176.png)
2Dゲームの場合は、2D Physics(USE_PHYSICS2d)にチェックを入れる必要があります。
ダイアログマネージャーを配置する
Assets>Plugins>Pxel Crushers>dialogue System>Prefabsの 「Dialogue Manager」プレハブをHierarchyにドラッグアンドドロップします。
![](https://mychma.com/wp-content/uploads/2022/04/image-177-800x307.png)
![](https://mychma.com/wp-content/uploads/2022/04/image-178.png)
データベースの作成
次にデータベースを作成します。「Dialogue Manager」のインスペクターを開きます。
「Create」から新規データベースを作成します。
今回はAssets直下にデフォルトの名称「Dialogue Database.asset」で作成します。
![](https://mychma.com/wp-content/uploads/2022/04/image-179-800x605.png)
会話ノードの作成
作成すると、Dialogueエディタが起動します。
Conversations(会話タブ)をクリックします。
![](https://mychma.com/wp-content/uploads/2022/04/image-180-800x498.png)
プラスマークを押して、会話ノードを作成していきます。
![](https://mychma.com/wp-content/uploads/2022/04/image-181-800x367.png)
右クリックから「Create Child Node」をクリックします。
![](https://mychma.com/wp-content/uploads/2022/04/image-182.png)
ノードが追加されるので、インスペクターの「Dialogue Text」に「こんにちは」と入力してみます。
![](https://mychma.com/wp-content/uploads/2022/04/image-184-800x516.png)
![](https://mychma.com/wp-content/uploads/2022/04/image-183.png)
ノードをダブルクリックして直接修正することもできますが、なぜか日本語入力はできないのでインスペクターから修正したほうがよいです。
次に作成したノードに対して子ノードを作成します。
右クリック→「Create Child Node」でノードを作成し、「Dialogue Text」に「さようなら」と入力します。
![](https://mychma.com/wp-content/uploads/2022/04/image-185.png)
灰色のノードはNPCのダイアログテキスト、
青色のノードはプレイヤーの応答を意味しています。
プレイヤーとNPCの作成
一旦、Dialogueエディタは☓で閉じます。
Hierarchyに空のオブジェクトを作成して「Player」というオブジェクトを作成します。
そして、3Dオブジェクト(+>3D Ojbject>Cube)のキューブを作成し、名前を「NPC」とします。
![](https://mychma.com/wp-content/uploads/2022/04/image-186.png)
キューブのpositionが0,0,0に配置されていない場合は、リセットで位置をオール0に戻します。
作成したNPCに「Add Compornent」から「Dialogue System Triger」を追加します。
![](https://mychma.com/wp-content/uploads/2022/04/image-187.png)
追加した「Dialogue System Trigger」の「Add Action」から「Start Conversation」を選択します。
![](https://mychma.com/wp-content/uploads/2022/04/image-188-800x485.png)
追加した 「Start Conversation」のドロップダウンから先程作成した「New Conversation1」を選択できるので選択します。
![](https://mychma.com/wp-content/uploads/2022/04/image-189-800x292.png)
「Start Conversation」の「Conversation Actor」にHierarchyの「Player」をドラッグアンドドロップします。さらに 「Conversation Conversant」にHierarchyの「NPC」をドラッグアンドドロップします。
![](https://mychma.com/wp-content/uploads/2022/04/image-190-800x691.png)
チェックのために「Dialogue System Trigger」の「Tigger」を「On Start」に設定します。
これでゲームの起動時にトリガーされるようになりました。 再生して確認してみましょう。
![](https://mychma.com/wp-content/uploads/2022/04/image-192-800x257.png)
再生して確認してみましょう。
![](https://mychma.com/wp-content/uploads/2022/04/image-193-800x393.png)
無事ダイアログが表示されることを確認できたので、先程変更したTriggerを「On Use」に戻しておきます。
Usableコンポーネントで話かけられる距離を設定する
次は利用できる距離を設定できるようにします。 「Add Compornent」から「Usable」コンポーネントを追加します。
Usableの「Max Use Distance」を30に設定します。
これで、5ユニット以上離れたカメラからレイキャストされた場合に反応するようです。
![](https://mychma.com/wp-content/uploads/2022/04/image-194.png)
次に、Playerにコンポーネントを追加します。 Add Compornentから「Selector」を追加します。
![](https://mychma.com/wp-content/uploads/2022/04/image-195-800x511.png)
以下のようなポップアップが出てきますのでADDをクリックします。
![](https://mychma.com/wp-content/uploads/2022/04/image-197.png)
自動翻訳:「Selector Use Standard UI Elements」コンポーネントを追加して、SelectorがUnity UIを使用できるようにする?そうしないと、レガシーなUnity GUIが使用されます。Dialogue ManagerのInstantiate Prefabsコンポーネントに割り当てられたUnity UIプレハブをカスタマイズすることができます。
Selector>Select Atを「Mouse Position」に変更します。
![](https://mychma.com/wp-content/uploads/2022/04/image-199-800x826.png)
再生して動作を確認してみます。
![](https://mychma.com/wp-content/uploads/2022/04/dialogue1.gif)
会話中に会話以外の処理を止める
PlayerにDialogue System Eventsをコンポーネントに追加して、 会話開始イベントを構成し、会話以外の処理を無効にします。(移動やカメラ制御など)
![](https://mychma.com/wp-content/uploads/2022/04/image-200.png)
「Conversation Start」で会話開始時のイベントを定義します。「+」を押して、 objectにPlayerをドラッグアンドドロップします。 そして、「Selector>bool enabled」を選択します。
![](https://mychma.com/wp-content/uploads/2022/04/image-202-800x653.png)
![](https://mychma.com/wp-content/uploads/2022/04/image-203.png)
次に、「On Conversation End」で会話終了時のイベントを定義します。 「On Conversation Start」と同様の設定にし、こちらはチェックボックスにチェックを入れます。
![](https://mychma.com/wp-content/uploads/2022/04/image-204-800x364.png)
これで設定完了です。会話イベント時に他の処理が停止されるようになりました。
まとめ
今回、「Dialogue System for Unityの使い方 第一回 クイックスタート編」を紹介しました。
- Package Managerからアセットのインポート
- ダイアログマネージャーを配置する
- データベースの作成
- 会話ノードの作成
- プレイヤーとNPCの作成
- Usableコンポーネントで話かけられる距離を設定する
- 会話中に会話以外の処理を止める
実際これらの処理を一から作成しようと思うとかなり大変ですが、「Dialogue System for Unity」アセットを利用するだけでこれだけの処理を慣れたら5分程度で実装できてしまいます。
今回は、クイックスタート編なので、どんなことがどの程度の作業で利用できるのかといったところが見れた程度ですが、他にも公式チュートリアルがあるのでそれらも順に記事にできたらと思っています。
今回の記事が、皆さんの技術力向上につながると嬉しいです。
もしこの記事が気に入りましたら、ぜひテクリエイトへのブックマーク登録をして頂けると喜びます。
以上、おつかれさまでした!