UnityでFungusを使って会話イベントを作る方法⑧|会話のスキップ機能を実装しよう!

Unityでfungusを使ったゆーちゃんの脱出で作った会話スキップボタン Fungusの使い方
スキップボタンが表示された会話イベント画面

繰り返されるイベントや会話を毎回読むのは、プレイヤーにとってちょっと面倒かも?
そこで今回は、Fungusの会話イベントにスキップ機能を追加して、ユーザーが好きなタイミングで会話を飛ばせるようにする方法を紹介します。

✅第⑦回の「Say Dialog(会話パネル)のカスタマイズ方法」はこちら↓

スキップボタンの作成

  1. Unityメニューで [UI > ボタン] を選択して、ボタンを作成。
  2. 作成したボタンを ヒエラルキーの「Say Dialog」の子オブジェクトにドラッグ&ドロップ
  3. シーンビューでボタンを Say Dialog > Panel」の中 に移動して、位置やサイズを調整
  4. ボタンの見た目は、テキストや画像を自由に変更してOK!
Unity×Fungus|ゲーム「ゆーちゃんの脱出」作成時に会話パネルの中に「スキップボタン」を追加した画像

スキップの動作はC#で制御する

スキップボタンが押されたときに実行する処理は、C#スクリプトで制御してるよ!

必要な処理は:

  • Fungusの会話イベントを終わらせる
  • 次のイベントが始まる/自由に行動できるなど、、

スキップ用の変数を作って条件分岐しよう!

スキップ後にどんな処理をするかは、ゲームの進行状況に応じて変える必要があるよね。

ぼくのゲームでは、Fungusの**文字列型変数「時間割」**を使って、
スキップされたあとの処理を条件分岐してるよ!

例えば:

  • 「おやつ」の時間なら おやつを隠す処理へ
  • 「絵本終わり」なら 本を片付ける処理へ

こうやって条件を分けることで、
スキップしてもイベントが自然につながる流れになるんだ〜♪


スキップボタンの使い方

ゆーちゃん
ゆーちゃん

ゆーちゃんの脱出」でのスキップボタンの使い方を説明するよ!

①「Call Method」でC#の関数を呼び出す

Fungusのフローチャート内で、スキップボタンを表示させたいタイミングに
「Call Method」ブロックを配置しよう!

このブロックで、C#スクリプト内の「スキップボタンを表示するメソッド」を呼び出せるよ。

Unity×Fungus|Call Methodコマンドを追加して、C#のメゾットを呼び出す設定を説明する画像

② C#でスキップボタンを表示する

Call Methodから呼び出されたC#の関数の中で、
スキップボタンの GameObject を SetActive(true) にして表示するよ!

さらにこのスキップボタンに、クリック時に実行する関数をアタッチしておくよ。

Unity×Fungus|スキップボタンオブジェクトのインスペクター画像

③ スキップボタンが押された時の処理

スキップボタンが押されたときには、以下のような処理をまとめて実行!

string zikanwari = flowchart.GetStringVariable("時間割");
skipButton.SetActive(false);
flowchart.StopAllBlocks();
Fungus.Flowchart.BroadcastFungusMessage(“会話終了”);

  • Fungusの*文字列型変数「時間割」*を Flowchart.GetStringVariable() で取得
  • 取得した値を zikanwari という変数に代入
  • スキップボタンを非表示にする(SetActive(false)
  • Flowchart.StopAllBlocks() でFungus内のイベントをすべて停止
  • SendFungusMessage("会話終了") Fungusに会話終了のメッセージを送る

FungusとC#スクリプトで変数を連携させる方法はこちら👇


④ 時間割に応じた処理の分岐

スキップ時に取得した変数”zikanwari”によって、次のように処理を分けているよ!

if (zikanwari == "おやつ") { // Oyatu を非表示にする処理 }
else if (zikanwari == "絵本の時間") {
  Fungus.Flowchart.BroadcastFungusMessage(“絵本終わり”); 
  // Fungusにメッセージ送って次のイベントへ
}

このようにして、スキップ後もイベントの流れを自然に続けることができるよ!


⑤ 「会話終了」メッセージを送る理由

SendFungusMessage("会話終了") を送っているのは、
Fungus側で**「会話中」変数を False にする処理**を実行するため!

この変数が False にならないと、次のステップ(例えばメニュー画面を開くなど)に進めないように制御しているんだ。

まとめ

スキップ機能は、C#とFungusをうまく連携させることで柔軟に作れるよ!

  • Fungusの「Call Method」でC#の関数を呼び出す
  • ボタン表示や挙動はC#スクリプトでコントロール
  • Flowchart.StopAllBlocks() SendFungusMessage でスマートに会話を終わらせる
  • プレイヤーがスムーズに進めるように、変数で状態管理しておくと◎

👇次の記事では、セーブ機能設定と作り方を紹介するよ⭐

コメント

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