项目中用空格作为对话的交互键,想要实现对话时点按UI中的panel和空格有一样的效果。
文档中创建event并传入的方法:
原文地址:Input events | Input System | 1.3.0
第二个方法第二个参数搞不懂应该传入什么,第一个成功。
using (StateEvent.From(Keyboard.current, out var eventPtr))
{
(Keyboard.current.spaceKey).WriteValueIntoEvent(1f, eventPtr);
InputSystem.QueueEvent(eventPtr);
}
上段实现了按下,实测后发现会一直保持值不变,所以需要再恢复,这里其实我没找到value的范围和实际的含义,我自己的理解是1按下0抬起。结合IPointerDownHandler和 IPointerUpHandler两个接口,在按下和抬起时传入相应的事件;
public void OnPointerDown(PointerEventData eventData)
{
using (StateEvent.From(Keyboard.current, out var eventPtr))
{
(Keyboard.current.spaceKey).WriteValueIntoEvent(1f, eventPtr);
InputSystem.QueueEvent(eventPtr);
}
}
public void OnPointerUp(PointerEventData eventData)
{
using (StateEvent.From(Keyboard.current, out var eventPtr))
{
(Keyboard.current.spaceKey).WriteValueIntoEvent(0f, eventPtr);
InputSystem.QueueEvent(eventPtr);
}
}
可以完美模拟按下空格的效果,按住不放可以保持按下状态。
关于value的实际定义和第二个方法的实现,希望有大佬能教教ヾ(✿゚▽゚)ノ。