ゲームでは経験値取得の会話ログ表示後に探索画面へ戻るなど、会話終了後にメソッドを呼び出したい状況が発生することがあります。今回はそのような状況を想定し、下記「Unity基礎2」でも紹介したFungusを使って、会話ログを表示させた後にメソッドを呼び出す方法を紹介します。

準備
今回は戦闘画面で経験値取得に関する会話ログを表示させ、探索画面に戻る処理の実装を想定します。前回の「Unity基礎4」で作成したプロジェクトに手を加え、下に示すように戦闘画面で取得経験値を会話ログとして表示させるようにしました。

会話終了後に関数を呼び出す方法
続いて実際に会話ログが表示された後に関数を呼び出す方法を説明していきます。
STEP1:呼び出したいメソッドを実装する
先ずは呼び出したいメソッドを実装します。今回は探索画面(ExploreScene)に移動するメソッドを呼び出すこととします。ここではGameManagerBattleSceneという名前のスクリプトを作成し、下記のような内容としました。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;//LoadSceneを用いるために導入
public class GameManagerBattleScene : MonoBehaviour
{
//ExploreSceneへ移動するメソッド
public void GoToExploreScene()
{
SceneManager.LoadScene("ExploreScene");
}
}
STEP2:スクリプトをアタッチするオブジェクトの作成とスクリプトのアタッチ
アタッチ先のオブジェクトの作成
STEP1でスクリプトを作成したら次はそのスクリプトをアタッチするオブジェクトを作成します。
今回はBattleSceneにおいて、GameManagerという名前で空のオブジェクトを作成しました。(
下図参照)
スクリプトのオブジェクトへのアタッチ
オブジェクトが作成できたらSTEP1で作成したスクリプトをオブジェクトにアタッチします。(上図参照)
STEP3:Fungusからメソッドを呼び出す処理を実装する
続いてFungusで表示させる会話ログからメソッドを呼び出す処理を実装します。方法は以下に示す通りです。まずFlowchartを選択して、OpenFlowchartWindowを左クリックします。
次に、メソッドを呼び出す直前の会話ログを表示させるブロックを選択します。
続いて、インスペクターウィンドウで+ボタンを左クリックし、CommandsにCallMethodを追加します。(下図参照)
CallMethodを追加したら下図の通り、CallMethodを左クリックし、STEP2で呼び出したいメソッドを記述したスクリプトのアタッチ先オブジェクトをTargetObject部分にドラッグ&ドロップします。
そしてMethodName部分にSay(会話ログ表示)の後に呼び出したいメソッド名を記述します。(下図参照)
・会話後に数秒待ってからメソッドを呼び出したい場合は、同ウィンドウのDelayを調整することで実現できます。
機能テスト
最後にPlayボタンを押してゲームを起動させ、処理が想定どおりに行われているか確認しましょう。実際に起動させてみた結果、下図のようにBattleSceneから開始して会話ログ表示後に探索画面へ戻ることが確認できました。
今回はFungusを使って、会話終了後にメソッドを呼び出す方法について説明しましたがいかがだったでしょうか。ここでは経験値取得を例に説明しましたが、例えばエネミーに遭遇した際の処理なども会話ログ→画面移動といった処理が必要になることもあると思いますので、皆様のゲームの製作でも役立つのではないかと思います。ぜひ参考にしていただければと思います。
以上。
コメント