【问题标题】:Unity touch events in the editor? (new input system)编辑器中的 Unity 触摸事件? (新的输入系统)
【发布时间】: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。

谢谢!

【问题讨论】:

    标签: c# unity3d


    【解决方案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 将添加一个触摸屏设备并自动镜像 在任何指针设备上输入虚拟触摸屏设备。

      【讨论】:

      • 很遗憾这也不起作用。我也读到了,因为您在编辑器中有两个选项。无论哪种情况,似乎都不起作用。我确实看到的不同之处在于,当使用调试器的选项时,“模拟触摸屏”设备始终存在,但在使用代码时,它只显示该设备几分之一秒,然后再次消失。
      猜你喜欢
      • 2022-09-25
      • 2022-01-16
      • 2022-01-21
      • 2020-09-29
      • 1970-01-01
      • 2013-10-28
      • 2021-10-03
      • 1970-01-01
      • 2020-03-30
      相关资源
      最近更新 更多