You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity新输入系统下无法调用IEnumerator实现Dash功能求助

问题原因及解决方案

你的问题核心是两个方法同名导致的命名冲突:你有一个void dash(InputAction.CallbackContext context)的输入回调方法,还有一个IEnumerator dash()的协程方法,当用字符串"dash"调用StartCoroutine时,Unity无法正确识别要启动的是协程版本的方法,因此无法触发预期的协程逻辑。

修复步骤:

  • 重命名协程方法,避免和回调方法同名
  • 推荐使用方法引用而非字符串名称调用协程(类型更安全,可避免拼写错误)

修改后的代码示例:

public void dash(InputAction.CallbackContext context)
{
    if (context.performed)
        StartCoroutine(DashCoroutine());
}

IEnumerator DashCoroutine()
{
    dashing = true;
    yield return new WaitForSeconds(0.2f);
    dashing = false;
}

如果坚持要用字符串调用协程,也可以,但必须保证协程方法名称唯一,比如把协程改成IEnumerator Dash(),再调用StartCoroutine("Dash"),但方法引用的方式更推荐,编译阶段就能检测错误。

内容的提问来源于stack exchange,提问作者Casseia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:52:04