Unity,从 Button onClick 调用 IEnumerator 函数
Unity, Calling a IEnumerator function from Button onClick
我尝试通过单击按钮调用 IEnumerator
函数,这样我就可以生成 return 一些东西,但我无法从检查器的 On Click()
下拉菜单中选择该函数。
我试图从另一个函数调用 IEnumerator
并将该函数分配给按钮,但不起作用!
显然我无法在 void
函数中执行 yield return
。
那么请教我该怎么做!?
非常感谢!
有一定的规则可以将函数挂接到检查器的统一事件。
1) 函数必须是 public
才能从检查器中选择它。
2) return 类型必须是 void
,因此您将无法选择任何 return 类型的函数,并且由于您的 IEnumerator
函数return一个IEnumerator
,您将无法从检查器中选择它。
3) 函数参数必须匹配事件参数,除非 UnityEvent 不带任何参数,如 Button.onClick 事件(感谢@derHugo 更正),例如按钮 onClick
事件不'采用任何参数,因此要从检查器中为其选择一个函数,该函数必须看起来像
public void ChoosableTemplateForOnClickButton() { }
但是您想从检查器调用 IEnumerator,所以您可以做的是将它包装在一个 void 函数中:
假设您的 IEnumerator 函数看起来像
public IEnumerator MyRoutine()
{
yield and enjoy...
}
将它包装在一个 void 函数中:
public void RoutineWrap()
{
StartCoroutine(MyRoutine());
}
现在您可以从检查器中选择RoutineWrap
。
作为 的替代方法,您也可以随时通过脚本在运行时添加回调。
仍然在 Unity 中,每个协程都必须使用 StartCoroutine
:
启动
public Button button;
private void Awake()
{
button.onClick.AddListener(() => StartCoroutine(MyRoutine()));
}
private IEnumerator MyRoutine()
{
...
}
我尝试通过单击按钮调用 IEnumerator
函数,这样我就可以生成 return 一些东西,但我无法从检查器的 On Click()
下拉菜单中选择该函数。
我试图从另一个函数调用 IEnumerator
并将该函数分配给按钮,但不起作用!
显然我无法在 void
函数中执行 yield return
。
那么请教我该怎么做!?
非常感谢!
有一定的规则可以将函数挂接到检查器的统一事件。
1) 函数必须是 public
才能从检查器中选择它。
2) return 类型必须是 void
,因此您将无法选择任何 return 类型的函数,并且由于您的 IEnumerator
函数return一个IEnumerator
,您将无法从检查器中选择它。
3) 函数参数必须匹配事件参数,除非 UnityEvent 不带任何参数,如 Button.onClick 事件(感谢@derHugo 更正),例如按钮 onClick
事件不'采用任何参数,因此要从检查器中为其选择一个函数,该函数必须看起来像
public void ChoosableTemplateForOnClickButton() { }
但是您想从检查器调用 IEnumerator,所以您可以做的是将它包装在一个 void 函数中:
假设您的 IEnumerator 函数看起来像
public IEnumerator MyRoutine()
{
yield and enjoy...
}
将它包装在一个 void 函数中:
public void RoutineWrap()
{
StartCoroutine(MyRoutine());
}
现在您可以从检查器中选择RoutineWrap
。
作为
仍然在 Unity 中,每个协程都必须使用 StartCoroutine
:
public Button button;
private void Awake()
{
button.onClick.AddListener(() => StartCoroutine(MyRoutine()));
}
private IEnumerator MyRoutine()
{
...
}