Unity,从按钮 onClick 调用 IEnumerator 函数

Pig*_*001 1 ienumerator function onclick buttonclick unity-game-engine

我尝试IEnumerator通过单击按钮调用函数,这样我就可以返回一些内容,但我无法从检查器的On Click()下拉菜单中选择该函数。

我尝试IEnumerator从另一个函数调用 并将该函数分配给按钮,但不起作用!

显然我不能yield returnvoid函数中执行此操作。

那么有人可以好心地教我该怎么做吗?

非常感激!

Ten*_*tni 5

将函数与检查器中的统一事件挂钩有一定的规则。

1)该功能必须能够public从检查器中选择它。

2)返回类型必须是void,因此您将无法选择具有任何返回类型的函数,并且由于您的IEnumerator函数返回IEnumerator,因此您将无法从检查器中选择它。

3)函数参数必须与事件参数匹配,除非UnityEvent不带任何参数,如Button.onClick事件(感谢@derHugo纠正),例如按钮onClick事件不带任何参数,因此要选择一个函数从检查员看来,该功能必须看起来像

public void ChoosableTemplateForOnClickButton() { }
Run Code Online (Sandbox Code Playgroud)

但是您想从检查器调用 IEnumerator,因此您可以将其包装在 void 函数中:

假设你的 IEnumerator 函数看起来像

public IEnumerator MyRoutine()
{
   yield and enjoy...
}
Run Code Online (Sandbox Code Playgroud)

将其包装在 void 函数中:

public void RoutineWrap()
{
   StartCoroutine(MyRoutine());
}
Run Code Online (Sandbox Code Playgroud)

现在您可以RoutineWrap从检查员那里进行选择。