【问题标题】:Get callback of Unity Input System UI Module获取 Unity 输入系统 UI 模块的回调
【发布时间】:2023-02-24 00:39:53
【问题描述】:

这是 Unity 中 UI 的输入系统

我正在尝试捕捉事件,就像我为另一个 InputAction 所做的那样:

void OnCancel(InputAction.CallbackContext context)
{
     //Do things
}

但我从来没有得到这个回调。我怎样才能使用这个模块?

【问题讨论】:

    标签: c# unity3d input


    【解决方案1】:

    特定于 UI 的默认操作与 DefaultInputActions 资产一起交付,该资产包含

    Afaik 你可以简单地通过例如附加听众

    new DefaultInputActions().UI.OnCancel.performed += OnCancel;
    

    如果您更愿意使用自己的自定义输入操作资产,则还需要在其中进行配置。

    您可以选择UI动作图并复制它(CTRL C) 然后进入您的自定义输入操作资产并将其粘贴到操作映射中 (CTRL V).

    【讨论】:

      【解决方案2】:

      输入系统 UI 输入模块是 Inputsystem 和 UI Input 管理之间的桥梁,回调在内部进行管理。

      从文档页面:

      https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/api/UnityEngine.InputSystem.UI.InputSystemUIInputModule.html#UnityEngine_InputSystem_UI_InputSystemUIInputModule_cancel

      据称:

      从此输入生成的事件将由 UnityEngine.EventSystems.ICancelHandler 接收。

      如果你实现接口取消处理器在你的单一行为和各自的取消时方法,您应该会看到在选择对象并触发取消操作时调用该方法。

      public class MyScript : MonoBehaviour, ICancelHandler
      {
          // Your script code.
      
          public void OnCancel(EventSystems.BaseEventData eventData)
          {
              // This is getting called when a Cancel event occurs.
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2021-02-12
        • 1970-01-01
        • 2014-11-21
        • 2022-09-25
        • 2012-02-21
        • 1970-01-01
        • 2011-10-29
        • 2022-01-21
        • 1970-01-01
        相关资源
        最近更新 更多