在做一个RPG游戏,需要在对话开始时停止玩家移动,对话完后,恢复玩家的移动
本来是在 ExecuteBlock
里执行前调用自己的 OnBlockStart
函数,并在 ExecuteBlock
的参数里传入 OnBlockEnd
但如果Block有嵌套的调用,比如A会去执行到B里,就会失效。因为在执行B的时候,并不会调用 OnBlockStart
和 OnBlockEnd
本来准备魔改一下 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();
}