C# Unity-输入系统给我一条错误消息“无法将类型'void'隐式转换为'System.Action(…)”
这让我很困惑。。。 所以我决定试用新的输入系统,看看它是怎么回事。我看了一个关于如何让它工作的教程,这是应该工作的代码:C# Unity-输入系统给我一条错误消息“无法将类型'void'隐式转换为'System.Action(…)”,c#,unity3d,C#,Unity3d,这让我很困惑。。。 所以我决定试用新的输入系统,看看它是怎么回事。我看了一个关于如何让它工作的教程,这是应该工作的代码: using UnityEngine; using UnityEngine.InputSystem; public class InputTest : MonoBehaviour { PlayerInputSystem input; private void OnEnable() { input.PlayerControlls.Shoo
using UnityEngine;
using UnityEngine.InputSystem;
public class InputTest : MonoBehaviour
{
PlayerInputSystem input;
private void OnEnable()
{
input.PlayerControlls.Shoot.performed += test();
}
void test()
{
Debug.Log("this is cool");
}
}
这真的让我很困惑,就像我说的。。。以下是我收到的错误消息:
无法将类型void隐式转换为System.Action
这将执行方法测试:
因此,您试图将返回值指定为事件处理程序
您只需为方法本身分配一个引用:
input.PlayerControlls.Shoot.performed += test;
您还需要更改测试的签名:
这将允许将测试隐式转换为委托操作。我怀疑您希望在测试结束时丢失测试-您不希望在OnEnable方法中调用测试,您只想用它创建一个委托,以便可以使用它订阅已执行的事件。这些屏幕截图与由于代码中的语法问题导致的编译错误有何关联;
input.PlayerControlls.Shoot.performed += test;
void test(CallbackContext context)