Unity 新输入系统 .started 不起作用,但 .performed 工作两次

Posted

技术标签:

【中文标题】Unity 新输入系统 .started 不起作用,但 .performed 工作两次【英文标题】:Unity New Input System .started doesn't work but .performed works twice 【发布时间】:2021-10-20 12:41:34 【问题描述】:

我正在使用新的输入系统创建一个射击愤怒的小鸟风格的游戏。

我想在鼠标点击和释放时将鼠标位置保存到一个变量中。

订阅.started 事件不起作用。使用.performed,1次点击2次,开始一次,发布后一次。

当我尝试.canceled 时,它也不起作用。

    private void OnEnable()
    
            controls.Gameplay.Shoot.started += _ => PlayerAimingStart();
            controls.Gameplay.Shoot.performed += _ => PlayerAimingPerformed();
    
        private void PlayerAimingStart()
        
            shootingPositionStart = controls.Gameplay.MousePosition.ReadValue<Vector2>(); shootingPositionStart.z = 0f;
        
    
        private void PlayerAimingPerformed()
        
            shootingPositionEnd = controls.Gameplay.MousePosition.ReadValue<Vector2>(); shootingPositionEnd.z = 0f;
            Vector3 force = shootingPositionStart - shootingPositionEnd;
            Vector3 clampedForce = Vector3.ClampMagnitude(force, maxDrag) * power;
            bulletGO.GetComponent<Rigidbody2D>().AddForce(clampedForce, ForceMode2D.Impulse);
        

【问题讨论】:

【参考方案1】:

在输入动作资源中,在我的游戏动作图和动作下,Gameplay &gt; Actions: Shoot/Left Button

我必须在右侧添加新闻交互 Interactions &gt; Press

并将触发行为设置为Press And Release

【讨论】:

这解决了我面临的同样问题。感谢您的回答!

以上是关于Unity 新输入系统 .started 不起作用,但 .performed 工作两次的主要内容,如果未能解决你的问题,请参考以下文章

使用 Find in Awake 缓存脚本引用,在 Start 中不起作用

手写笔输入在 Unity android 上不起作用

日期输入在 Firefox 中不起作用

我正在尝试在终端中运行 npm start,但它不起作用

与 session_start() 相关的登录时开始但在其他页面上不起作用

Lite-server npm start 不起作用