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

Posted

技术标签:

【中文标题】编辑器中的 Unity 触摸事件? (新的输入系统)【英文标题】:Unity touch events in the editor? (new input system) 【发布时间】:2020-12-27 19:34:07 【问题描述】:

我正在尝试在编辑器中获取触摸事件。但是我没有从输入操作中得到任何事件。

我有一个非常简单的脚本:

using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.EnhancedTouch;
 
public class GameManager : MonoBehaviour

    public InputAction _touch;
 
    void Awake()
    
        TouchSimulation.Enable();
 
        _touch.started += OnTouch;
        _touch.performed += OnTouch;
        _touch.canceled += OnTouch;
    
 
    void OnTouch(InputAction.CallbackContext context)
    
        Debug.Log(context.ReadValueAsObject());
    

所以一个简单的InputAction _touch 我订阅了它的所有事件。 我还使用TouchSimulation.Enable() 在唤醒功能中启用触摸模拟。

然后在检查器中我这样设置:

Input Action 的设置是:

而那些主要的触摸是:

当我在游戏视图中单击并拖动鼠标时,没有任何反应,也没有触发任何事件。

我做错了什么?获取触摸事件并在编辑器中模拟它们还需要什么?

我正在运行 Unity 2019.4。

谢谢!

【问题讨论】:

【参考方案1】:

我发现了问题,显然你需要先启用输入动作:

void Awake()

    _touch.started += OnTouch;
    _touch.performed += OnTouch;
    _touch.canceled += OnTouch;
    _touch.Enable();

在monobehavour 的OnEnableOnDisable 回调中启用/禁用也是一个好主意。

【讨论】:

【参考方案2】:

引用自文档:https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/Touch.html

触摸模拟 触摸输入可以通过其他输入来模拟 各种指针设备,例如鼠标和笔设备。启用 这样,您可以将 TouchSimulation MonoBehaviour 添加到 场景中的 GameObject 或简单地调用 TouchSimulation.Enable 在你的启动代码中的某个地方。

void OnEnable()

    TouchSimulation.Enable();
 

在编辑器中,您还可以通过切换“模拟触摸输入”来启用触摸模拟 “选项”下拉菜单中的“从鼠标或笔” Input Debugger。

TouchSimulation 将添加一个触摸屏设备并自动镜像 在任何指针设备上输入虚拟触摸屏设备。

【讨论】:

很遗憾这也不起作用。我也读到了,因为您在编辑器中有两个选项。无论哪种情况,似乎都不起作用。我确实看到的不同之处在于,当使用调试器的选项时,“模拟触摸屏”设备始终存在,但在使用代码时,它只显示该设备几分之一秒,然后再次消失。

以上是关于编辑器中的 Unity 触摸事件? (新的输入系统)的主要内容,如果未能解决你的问题,请参考以下文章

Unity Remote 5 使用

UNITY_UGUI

在触摸 Unity C# 时移动播放器

Android系统全局触摸事件监听

如何使 Unity 3D 输入字段支持的 Windows 10 触摸键盘滑动和预测?

Unity实现动作游戏的技能系统(Ability System)设计原型