C# 在自己的回调中禁用Unity输入操作映射会导致错误

C# 在自己的回调中禁用Unity输入操作映射会导致错误,c#,unity3d,C#,Unity3d,将上述代码与新的Unity输入系统连接将触发堆栈溢出错误。这段代码的用例有点奇怪,但我不确定它为什么会导致错误。是我没有理解新的输入系统是如何工作的,还是有其他事情与我如何实现回调方法有关 错误消息:StackOverflowException在执行“IAM_One/Up_IAMOne”的“Cancelled”回调时发生。这是Unity输入系统的一个已知问题,已在输入系统1.1.0-preview.1和更高版本中修复。Unity 2019.4.0f1和更高版本中提供了该问题。是InputDevi

将上述代码与新的Unity输入系统连接将触发堆栈溢出错误。这段代码的用例有点奇怪,但我不确定它为什么会导致错误。是我没有理解新的输入系统是如何工作的,还是有其他事情与我如何实现回调方法有关


错误消息:StackOverflowException在执行“IAM_One/Up_IAMOne”的“Cancelled”回调时发生。这是Unity输入系统的一个已知问题,已在输入系统1.1.0-preview.1和更高版本中修复。Unity 2019.4.0f1和更高版本中提供了该问题。

InputDeviceController
您实现了什么?你能把密码寄出去吗?听起来像是
\u UserInputDevice.IAM\u One.Disable()
内部也会触发
\u UserInputDevice.IAM\u One.Up\u IAMOne.cancelled
@derHugo InputDeviceController是使用Unity的输入操作系统时自动生成的C类的名称。我没有以任何方式更改该文件,因此我不相信该错误会存在于该类中,除非它在生成该类时本身就是Unity的bug。
using UnityEngine;
 
public class TestScript : MonoBehaviour
{
    private InputDeviceController _UserInputDevice;
    private void Awake() {
        _UserInputDevice = new InputDeviceController();
        _UserInputDevice.IAM_One.Up_IAMOne.canceled += CallbackContext => Up_IAMOne();
        _UserInputDevice.IAM_Two.Up_IAMTwo.canceled += CallbackContext => Up_IAMTwo();
        _UserInputDevice.IAM_One.Enable();
    }
 
    private void Up_IAMOne() {
        Debug.Log("Up_IAMOne");
        _UserInputDevice.IAM_One.Disable();
        _UserInputDevice.IAM_Two.Enable();
    }
 
    private void Up_IAMTwo() {
        Debug.Log("Up_IAMTwo");
        _UserInputDevice.IAM_Two.Disable();
        _UserInputDevice.IAM_One.Enable();
    }
}