【Unity】Fungusでゲーム制作(9) Conversationコマンドで脚本的に会話イベントを書く

Fungusの基本的な使い方に関しては[第1回](https://qiita.com/Kirikabu_ueda/items/bfc6e086d408b1cba34b)の記事で解説しておりますので、まだの方はそちらからお読み下さい。

[前回](https://qiita.com/Kirikabu_ueda/items/d168a012bfab0036da36)は制限時間付きの選択肢やQTEといったリアルタイム性のあるイベントの作り方について解説しました。
今回は**Conversationコマンド**について解説します。これはセリフやキャラクターの配置について書いたテキストを入れるだけでそれに沿った処理をしてくれるというものです。イメージとしては脚本を書いて役者さんに渡し、その通りに演じてもらうような感じでしょうか。
ここまでは会話イベントを作る際にSayコマンドやPortraitコマンドを組み合わせてきましたが、長い会話ともなるといちいちコマンドを並べていくのは面倒くさくなってしまうでしょう。それがConversationコマンドであれば1コマンドで済みます。また書式さえ覚えてしまえばUnityを起動せずともテキストだけは書けるようになりますので、より製作が捗るかと思います。
# とりあえず使ってみる
Conversationコマンドを追加してみましょう。
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/35cc6451-f45b-9d64-da04-b8515ffe1366.png)
Conversation Textという欄にテキストを書きます。上図左側のスクショだと既に書き込んでありますね。そしてこれを実行すると上図右側のようになります。見比べてみましょう。
Conversation Text欄の1行目に注目です。**『:』の左側には誰が（どの立ち絵を使って、どの位置で）セリフを喋るかを、右側にはセリフの内容を書きます。**
『誰が』の指定には配置したキャラクター（第1回参照）につけた名前、あるいはそのGameObjectの名称を使います。使う立ち絵については、該当キャラクターのPortrait欄にある画像の名称で指定します。キャラクターの指定との間にはスペースを入れて区切ってください（これは他の指定についても同様です）。
位置についてですが、Hierarchyメニューからステージ（こちらも第1回参照）を探し、子オブジェクトを開いてみてください。
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/ee50a8b8-6bd2-6fb7-0964-093963899d2f.png)
Middle, Left, Right……と場所を示す名前のGameObjectが並んでいます。これらはステージ上で立ち絵を表示する位置を指定するためのものです。そういえばPortraitコマンドのAt Position欄でもこれらの中から立ち絵の表示位置を選んでいましたね。Conversationのテキストでもこれらの位置を使います。上記の例でいえばleftと書けば左に出てきますし、rightと書けば右に出てきます。
『:』の右側のセリフについては基本的にSayコマンドと同じやり方で書くことができ、タグも使えます（タグの種類については第2回を参照）。**ただし改行はエンターキーではなく改行したいところに『\n』を入れることで行います**（1行1処理、という扱いなので普通にエンターで改行するとページが切り替わってしまうのです）。
# 書式と例
Conversationコマンドの詳しい書き方と具体例をまとめていきます。
『:』の左側にセリフを言うキャラクターの設定を、右側にセリフを書くのが基本となります。
## 発言するキャラクターの指定
キャラクターにつけた名前（CharacterコンポーネントのName Text欄）、またはキャラクターを保持するGameObjectの名称を指定します。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/1a2b7fda-f0f3-e48f-603b-bee078b8a120.png)
Sayコマンドだと「誰の発言でもない」という状態を指定できたのですがConversationコマンドだと直接はできないようです。この場合「誰でもないことを示すキャラクター（Name Text欄には半角スペース1つ入れておく）」を作り、そいつの発言にする……という手が使えます。
## キャラクターの立ち絵の設定
キャラクターの指定の後に続ける形でキャラクターの立ち絵の設定が行なえます。設定項目は複数あり、1行で組み合わせて使うことができます。区切りは半角スペースで行います。
（キャラクターの指定は必須ではなく、省略して各種の設定を行うことも可能です。その場合は直近で設定したキャラクターに対して設定されるようです）
### 立ち絵の種類
各キャラクターのPortrait欄に指定した画像名を入力します。
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/97a8cfd1-9782-e6d6-c95f-24205c649ef7.png)
ここで、画像名が半角スペースを含んでいる……という場合は**設定の区切りと区別するためにダブルクォートで囲ってください（これ以外の設定項目の名称についても同様です）。**
### 立ち絵の位置
設置したステージ内の立ち絵表示位置の名称を指定します。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/97dcee86-dec1-b6f6-a901-6eba442c784c.png)
### 立ち絵の向き
『>>>』とつけると右に、『<<<』とつけると左に向きます。
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/f2415d79-0ece-2657-dd97-cc825abed2f8.png)
## メッセージの表示に関する設定
nowaitをつけると前のセリフのクリックを待たずに次のセリフを表示します。立ち絵の設定と同時に使用できます。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/9c212f52-1668-2682-223a-eb4d6a99d619.png)
## 立ち絵を隠す
『キャラクター名 hide』と書くことで立ち絵を隠すことができます。
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/23063f36-88b1-e72a-5155-33c767cd2fd5.png)
## コメントを入れる
『--』ではじまる行はコメント扱いになり一切の処理を行いません。メモ、覚え書きに使いましょう。
![スクリーンショット 2020-10-28 12.06.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/63319/2b602311-4a54-70fa-d24c-46f7572cd48d.png)


Conversationコマンドに関する説明は以上です。
今後はいよいよプログラミング寄りの話題に移っていきたいと思います。次回はLuaスクリプトによるFungusの制御を扱う予定です。