UnityでFungusを使って会話イベントを作る方法⑤|変数と条件分岐

ゲーム「ゆーちゃんの脱出」でFungusのIfコマンドを使い、ストーリーを分岐させている画像 Fungusの使い方
「ゆーちゃんの脱出」Fungusを使ってストーリーを分岐している画像

今回は、変数を使ってイベントを分岐させる方法を解説するね!

アイテムを持ってるかどうかや、選択肢によってストーリーを変える…
そんなゲームらしい処理も、Fungusの「変数」と「条件分岐」で簡単に作れるよ♪

ゆーちゃん
ゆーちゃん

ぼくのゲーム「ゆーちゃんの脱出」でもたくさん使っているから、
その実例も紹介しながら進めていくね!

✅第④回の「キャラクター表示や会話コマンドの使い方」はこちら↓

Fungusで変数を作成する方法

Flowchartで変数を追加する

まずは、変数を作ってみよう!

Flowchartを選択すると、インスペクターに「Variables(変数)」という項目があるんだ。

Unity×Fungus|Flowchartのインスペクター内Variablesの場所を示す画像

ここで「」を押すと、変数の型(タイプ)を選べるよ。

Unity×Fungus|Flowchartのインスペクター内Variableに追加方法を説明する画像

よく使う変数の型

たとえば、アイテムを持ってるかどうかで分岐したい場合は、「Boolean(ブール値)」を使うよ。
これはオン・オフ(☑あり or なし)だけを判断するタイプなんだ。

  • アイテム持ってる → true
  • 持ってない → false

「Var」のところに、自分でわかりやすい変数名を入力しよう!

Unity×Fungus|VariablesにBooleanを追加し、Varの設定箇所を説明した画像

変数の初期値とチェックボックス

変数名の横にある☑チェックは、初期値を設定する場所。

Unity×Fungus|VariablesにBooleanを追加し、初期値の設定チェックボックスの場所を説明する画像

例えば「ゲーム開始時はアイテム持ってない」なら、☑を外しておくと、false(持ってない)になるよ!


変数のスコープ(範囲)

変数には、以下の3つの範囲(スコープ)があるんだ。

  • Private:このFlowchart内だけで使える
  • Public:他のオブジェクトからアクセスできる
  • Global:他のFlowchartでも共通で使える(全体共通の変数)
Unity×Fungus|VariablesにBooleanを追加し、変数のスコープを設定する方法を説明する画像

ゲーム全体で共通の状態(例:アイテム所持フラグ)を管理したいときは、「Global」にしておくと便利だよ!


他の型の変数もあるよ!

Fungusでは、他にもいろいろな型が使えるんだ:

  • Integer:整数(スコア、回数など)
  • Float:小数(スピードなど)
  • String:文字(名前やセリフの一部など)
  • GameObject:ゲーム内のオブジェクトを入れられるよ

変数の値を変える方法

Set Variableコマンドの使い方

変数を作ったら、フローチャートウィンドウのブロックから「Set Variable」コマンドを追加して値を変更できるよ!

Unity×Fungus|Set Variableコマンドを追加して変数の値を変える方法を説明する画像
  1. Any Var → 値を変更したい変数を選ぶ
  2. Data → 新しく設定したい値を入力(Booleanの場合はオン・オフ
  3. Operation → 値をどう変えるかを選ぶ

たとえば変数の型がInteger(整数)の場合:

  • =:そのまま代入する
  • +:足す
  • -:引く
  • =!:否定(Boolean型などでも使うよ
Unity×Fungus|Set Variableコマンドを追加して変数の値(オペレーション)を選択する画像

ぼくのゲーム「ゆーちゃんの脱出」では、いろんなフラグ管理に使ってたんだ~!
たとえば、ドアを開けたら 変数DoorOpened」= true にしたり、お友達と会話した回数をカウントしたりしたよ✨

変数を使って条件分岐する

IfブロックとElse Ifブロック

「If」ブロックは、「もし●●だったら…」という条件で処理を分けるブロック。

Unity×Fungus|ゲーム「ゆーちゃんの脱出」でFungusのIf/Else If/Elseコマンドを挿入している画像

条件に当てはまらなかったときは、*「Else If」*を使ってさらに分岐できるよ!

  • 1つ目の条件:If
  • 2つ目以降の条件:Else If
  • どの条件にも当てはまらないとき:Else(必要に応じて)

処理を別ブロックにまとめる方法

処理をスッキリさせたいときは、「Call」ブロックを使おう!

Unity×Fungus|Callコマンドの設定方法と説明画像
  • Target Block:実行したいブロックを指定
  • Target Flowchart:Flowchartが1つなら空欄でOK!

Callされたブロックは、ちゃんと矢印でつながるから分かりやすいね♪

Unity×Fungus|ゲーム「ゆーちゃんの脱出」でFungusの条件分岐させたブロックを矢印で繋げている画像

👉ブロックの色変更についてはこちら:①|基本操作とコマンドブロック一覧

ネストの注意

Ifの中にさらにIfを入れる(ネスト)もOK。でも、最後に「End」ブロックを入れ忘れないでね!

Unity×Fungus|ゲーム「ゆーちゃんの脱出」で使ったIf文のネスト画像
ゆーちゃん
ゆーちゃん

ぼくのゲーム、「ゆーちゃんの脱出」では、
こんなにたくさんの変数を使ってイベントを分岐させてるよ~!

Unity×Fungus|ゲーム「ゆーちゃんの脱出」で使ったFungusの変数一覧画像

まとめ

Fungusの変数は、「アイテムを持ってるかどうか」や「イベントの進行度」みたいに、
プレイヤーの行動によってストーリーを変えるときにとっても便利なんだ!

👇次の記事では、選択肢メニューやスキップボタンの作り方、C#との連携も紹介するよ♪

コメント

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