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

时间:2020-09-09 11:12:23

标签: c# unity3d

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

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

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()在“唤醒”功能中启用了触摸模拟。

然后在检查器中按如下所示进行设置:

Inspector

“输入操作”的设置为:

Input Action

主要接触对象是:

Primary Touch

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

我在做什么错?我还需要什么来获取触摸事件并在编辑器中对其进行仿真?

我正在运行Unity 2019.4。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

void Awake()
{
    _touch.started += OnTouch;
    _touch.performed += OnTouch;
    _touch.canceled += OnTouch;
    _touch.Enable();
}

OnEnableOnDisable回调中启用/禁用单一行为也是一个好主意。

答案 1 :(得分:0)

文档引用: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将添加一个触摸屏设备并自动镜像 在任何Pointer设备上输入虚拟触摸屏设备。