Edited at

Fungusでスクリプトから会話イベントを発生させる方法


デモ

今回作ったサンプルはこんな感じです。

ユニティちゃんがウニに触れると会話イベントが発生します。


環境

Windows10

Unity 2017.3.1f1

Fungus 3.9.1

ユニティちゃん2D


分からなかったこと

FungusのFlowchartのブロックが始まるイベント(Execute On Event)をCollision2Dに指定したとき、

どういう条件で呼ばれるのか公式ドキュメントを見てもよく分からなかった...

なので今回の方法は接触したとき以外でも幅広く使えるだろうサンプルを作ってみました。


解説

画像1E.png

Flowchartの最初のブロックのExecute On EventをMessage Receivedに設定します。

今回はサンプルなのでMessage名は"test"に設定しておきます。

次にスクリプトです。

今回は接触したときに会話イベントを発生させるため、UnityChan2DControllerの中に直接記述しました。


UnityChan2DController.cs

    private void OnCollisionEnter2D(UnityEngine.Collision2D collision)

{
//Uniタグがつけられたオブジェクトと接触したとき
if(collision.collider.CompareTag("Uni"))
{
//シーン中のFlowchartのExecuteOnEventに設定されたMessageReceivedを取得する
MessageReceived[] receivers = GameObject.FindObjectsOfType<Fungus.MessageReceived>();
//取得できた場合
if (receivers != null)
{
//すべてのMessageReceivedに"test"イベントを送信する
foreach (var receiver in receivers)
{
receiver.OnSendFungusMessage("test");
}
}
}
}

こんな感じにFlowchartにメッセージを送信して会話イベントを発生させました。

FungusのSendMessage.csにメッセージを送る処理が書かれていたのでそこを参考にしました。


最後に

Fungusを知ったとき、こんな便利なアセットがあるんだなと思いました。

ゲームジャムでノベルゲームなどを作る機会があったら使ってみたいなと感じました。

Fungusの詳しい使い方はまだよくわかっていないので、ほかの方の記事を参考にしてみてください。

宣伝になりますがAppStoreにCocos2d-x,Unity,OpenGLESで作ったゲームをリリースしているのでぜひ遊んでみてください!

AppStore


ライセンス


ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています