Fungus 在 Block 执行前后,执行回调

在做一个RPG游戏,需要在对话开始时停止玩家移动,对话完后,恢复玩家的移动
本来是在 ExecuteBlock 里执行前调用自己的 OnBlockStart 函数,并在 ExecuteBlock 的参数里传入 OnBlockEnd
但如果Block有嵌套的调用,比如A会去执行到B里,就会失效。因为在执行B的时候,并不会调用 OnBlockStartOnBlockEnd
本来准备魔改一下 Fungus 的源码,但改的过程中发现 Fungus 已经留好了接口。但这个接口查了 Google 和 百度都没有相关信息,所以记录在这里
只需要添加委托就可以了

BlockSignals.OnBlockStart += OnBlockBegin;
BlockSignals.OnBlockEnd += OnBlockEnd;

Menu 也一样,添加对应委托就好了

MenuSignals.OnMenuStart += OnMenuStart;
MenuSignals.OnMenuEnd += OnMenuEnd;

Menu 也可以通过委托的方式,自动选中第一个选项

public void OnMenuStart(MenuDialog menu)
{
    // 默认选中第一个选项
    menu.CachedButtons[0].Select();
}

你可能感兴趣的:(Fungus 在 Block 执行前后,执行回调)