Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity-输入系统给我一条错误消息“无法将类型'void'隐式转换为'System.Action(…)”_C#_Unity3d - Fatal编程技术网

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)