unity3d 获取Unity输入系统UI模块的回调

6l7fqoea  于 2023-03-09  发布在  其他
关注(0)|答案(2)|浏览(245)

这是Unity中UI的输入系统

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

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

但是我从来没有得到这个回调函数,我该如何使用这个模块呢?

7uzetpgm

7uzetpgm1#

特定于UI的默认操作随包含以下内容的软件包附带的DefaultInputActions资产一起提供

你可以简单地通过以下方式连接监听器:

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

如果您更愿意使用自己的自定义输入操作资产,则还需要在其中配置这些资产。
您可以选择UI动作Map并复制它(CTRL C),然后进入您的自定义Input Actions资源并将其粘贴到动作Map中(CTRL V)。

r3i60tvu

r3i60tvu2#

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

从文档页面:
https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/api/UnityEngine.InputSystem.UI.InputSystemUIInputModule.html#UnityEngine_InputSystem_UI_InputSystemUIInputModule_cancel
其中指出:
UnityEngine.EventSystems.ICancelHandler将接收由此输入生成的事件。
如果在MonoBehaviour上实现接口ICancelHandler以及相应的OnCancel方法,则应看到在选择对象并触发取消操作时调用该方法。

public class MyScript : MonoBehaviour, ICancelHandler
{
    // Your script code.

    public void OnCancel(EventSystems.BaseEventData eventData)
    {
        // This is getting called when a Cancel event occurs.
    }
}

相关问题