编辑器中的 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 的OnEnable
和OnDisable
回调中启用/禁用也是一个好主意。
【讨论】:
【参考方案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 触摸事件? (新的输入系统)的主要内容,如果未能解决你的问题,请参考以下文章