C# 在自己的回调中禁用Unity输入操作映射会导致错误
将上述代码与新的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
错误消息: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();
}
}