Unity新的输入系统没有被触发

Posted

技术标签:

【中文标题】Unity新的输入系统没有被触发【英文标题】:Unity new Input system not being triggered 【发布时间】:2022-01-21 10:58:36 【问题描述】:

我遇到了一个奇怪的问题,即“根本”没有触发任何输入。 拔掉我的头发;找不到哪里错了。

结果是什么都没有被写入;虽然一切都已确定。 在输入资产中,我添加了“交互”和“应用程序退出”条目。

任何人都可以看到这里出了什么问题?

public class InputManager : MonoBehaviour

    [SerializeField] private InputActionAsset _actions;

    public InputActionAsset actions
    
        get => _actions;
        set => _actions = value;
    

    private InputAction quitInputAction  get; set; 
    private InputAction interactInputAction  get; set; 

    private void OnEnable()
    
        quitInputAction?.Enable();
        interactInputAction?.Enable();
        Setup();
    

    private void Setup()
    

        interactInputAction = actions.FindAction("Interact");
        if (interactInputAction != null)
        
            interactInputAction.started += OnInteract;
            interactInputAction.performed += OnInteract;
            interactInputAction.canceled += OnInteract;
        
        else
        
            Debug.LogError("Missing Interact Binding");
        

        quitInputAction = actions.FindAction("Application Quit");
        if (quitInputAction != null)
        
            quitInputAction.started += OnAppQuit;
            quitInputAction.performed += OnAppQuit;
            quitInputAction.canceled += OnAppQuit;
        
        else
        
            Debug.LogError("Missing Application Quit Binding");
        
    

    protected virtual void OnAppQuit(InputAction.CallbackContext context)
    
        if (context.started || context.performed)
        
            Debug.Log("Quit");
            Application.Quit();
        

        else if (context.canceled)
            Debug.Log("Application Quit Cancelled");
    

    protected virtual void OnInteract(InputAction.CallbackContext context)
    
        if (context.started || context.performed)
        
            Debug.Log("Interact");

        

        else if (context.canceled)
            Debug.Log("Application Quit Cancelled");
    

【问题讨论】:

您使用的是什么输入资产?控制台中的任何错误?您的设置是否成功并且您的脚本日志显示出来了? 【参考方案1】:

您是否按照分步教程创建操作映射? 您是否查看过 Unity Input Debugger 以查看您的输入是否使用了映射?一定要关注视频,因为阅读统一文档和屏幕截图不一定能让您正确了解如何设置它,而且很容易错过一些东西。

https://www.youtube.com/watch?v=YHC-6I_LSos

【讨论】:

以上是关于Unity新的输入系统没有被触发的主要内容,如果未能解决你的问题,请参考以下文章

OnPointerEnter 和 OnPointerExit 没有被触发 Unity

如何使用新的输入系统在 Unity 中查找鼠标位置

编辑器中的 Unity 触摸事件? (新的输入系统)

unity3d屏蔽Windows10输入法

在新的 Unity 输入系统中如何映射到 KeyCode.JoystickButton0?

Unity MLAPI ServerRPC 没有被调用