unityのassetのfungusを使って会話シーンを作りたい
使っているもの、環境
fungus
https://assetstore.unity.com/packages/templates/systems/fungus-34184
unity 2019.1.1f1
やろうとしていること
ストーリーモードを作ろうとしている。戦闘シーン→会話シーン->戦闘シーン...と繰り返したいがそれごとに会話シーンを作るのは面倒なので会話シーンを一つだけ作って再利用したい。ベストプラクティスはさておき手探りで実行できるようにした
どうやってやろうとしているか
会話用のシーンを作って、fungusのフローチャートを以下のように作って会話シーンに遷移したときに渡された情報からどの会話を開始させるかを判別する
実際はタイトルシーン->prologue->story1_1->ゲームシーン->...と遷移させたい
シーン間の情報を渡す方法は変数をstaticにして渡したりDontDestroyOnLoadを使ったりということができるらしいので、何かしらの方法で渡す。今回はGameSystemScriptというクラスを作成してDontDestoryOnLoadで消えないようにしてみた
public class GameSystemScript : MonoBehaviour
{
public static int nextTalkScene = 1;
public int getNextTalkScene()
{
return nextTalkScene;
}
public void setNextTalkScene(int n)
{
nextTalkScene = n;
}
private void Awake()
{
// GameSystemはGameSystemScriptをアタッチしたgameObject
DontDestroyOnLoad(GameSystem);
}
タイトルシーンでGameSystemScriptのnextTalkSceneを設定して次のシーンに遷移させる
GameSystem.GetComponent<GameSystemScript>().setNextTalkScene(0);
SceneManager.LoadScene(nextScene);
public class TalkSceneMain : MonoBehaviour
{
public Fungus.Flowchart flowchart;
GameSystemScript gameSystem;
void Start()
{
gameSystem = FindObjectOfType<GameSystemScript>();
int nextTalkScene = gameSystem.getNextTalkScene();
switch (nextTalkScene)
{
case 0:
flowchart.ExecuteBlock("prologue");
break;
case 1:
flowchart.ExecuteBlock("story1_1");
break;
case 2:
flowchart.ExecuteBlock("story1_2");
break;
case 3:
flowchart.ExecuteBlock("story1_3");
break;
}
}
...
これでタイトルシーンが終わったらTalkSceneに入ってfungusのprologueを実行できるようになった。
これを拡張すればTalkSceneが実行されるときに任意の会話が会話できるようになった
Author And Source
この問題について(unityのassetのfungusを使って会話シーンを作りたい), 我々は、より多くの情報をここで見つけました https://qiita.com/surari/items/297ab4f3a583bac81721著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .