MRが楽しい

MRやVRについて学習したことを書き残す

DialogueSystemのダイアログエディタの使い方 その7(Conversationsカテゴリ)

本日は DialogueSystem の勉強枠です。
DialogueSystem のダイアログエディタの使い方を確認しながら記事にします。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

デフォルトの OnExecute()

シーンオブジェクトを既定の OnExecute() イベントに割り当てることはできません。これは Dialogue System データベースがシーンとは独立して存在するためです。
代わりに、プレハブや ScriptableObject などのアセットファイルを割り当てる必要があります。

次の例ではオーディオクリップを再生する方法を提供する ScriptableObject アセットを作成しています。
そのメソッドをダイアログエントリの OnExecute() イベントに割り当てます。

まず次のコードを含む TestScriptableObject という名前の新しい C# スクリプトを作成します。

using UnityEngine;
[CreateAssetMenu(fileName = "TestScriptableObject")]
public class TestScriptableObject : ScriptableObject
{
    public AudioClip[] audioClips;
    public void PlayAudioClip(int i)
    {
        AudioSource.PlayClipAtPoint(audioClips[i], Vector3.zero);
    }
}

次に[Project]ビューで右クリックから[Create -> TestScriptableObject]を選択します。これによりアセットファイルが作成されます。

アセットを Resources という名前のフォルダーに移動することでビルドに含めることができます。
Unity の一部のバージョンまたは一部のプラットフォームでは、必要ないと判断されたアセットが削除されることがあります。
これはどのシーンでも参照されていない ScriptableObject アセットでよく発生するので注意が必要です。

作成したアセットファイルのInspectorビューを開き、オーディオクリップを割り当てることができます。

最後にエントリノードの OnExecute() イベントの[+]ボタンをクリックして TestScriptableObject を割り当てます。
実行するメソッド (PlayAudioClip) を選択し、再生するオーディオクリップのインデックスを指定します。

これでエントリノードが再生されたタイミングで指定のオーディオが再生されるようになります。

シーンベースの OnExecute()

[Add Scene Event]をクリックすると、シーンオブジェクトを割り当てることができる2つ目の OnEecute() イベントが追加されます。
実際の UnityEvent は現在のシーンに存在するため、データベースのエクスポート機能と互換性があります。


アウトラインエディタ

アウトラインモードで会話を編集することもできます。これは Bioware の Aurora ツールセットのようなエディタのユーザーにとっては馴染みがあるかもしれません。
アウトラインモードに切り替えるには[Menu -> Outline Mode]を選択します。

次回は Templates と Watches カテゴリについてです。
bluebirdofoz.hatenablog.com