跳到主要内容

输入事件 (Input Event)

输入事件是为输入模块定制的事件系统,它提供可阻塞的事件监听,并提供对异步的支持,可以大幅简化输入的业务复杂度。

订阅输入事件

您可以通过InputEvent.Add来订阅事件; 通过InputEvent.Remove来取消订阅,如以下代码:

using UnityEngine;

public class Example_SubscribeInputEvent : MonoBehaviour
{
private void Start()
{
InputModule inputModule = winS.Unity.Runtime.GetModule<InputModule>();
inputModule.click.onClick.Add(OnClickCallback);
}
private void OnDestroy()
{
InputModule inputModule = winS.Unity.Runtime.GetModule<InputModule>();
inputModule.click.onClick.Remove(OnClickCallback);
}

private void OnClickCallback()
{
Debug.Log("Player Clicked!");
}
}

以阻塞的方式订阅事件

输入事件允许阻塞式订阅,一旦您订阅阻塞事件,则该事件队列里位于阻塞事件之前的事件均都不会被触发。

您可以通过InputEvent.AddBlock来订阅阻塞事件; 通过InputEvent.Remove来取消阻塞订阅,如以下代码:

using UnityEngine;

public class Example_SubscribeInputEventWithBlocking : MonoBehaviour
{
private void Start()
{
InputModule inputModule = winS.Unity.Runtime.GetModule<InputModule>();
inputModule.click.onClick.AddBlock(OnClickCallback);
}
private void OnDestroy()
{
InputModule inputModule = winS.Unity.Runtime.GetModule<InputModule>();
inputModule.click.onClick.Remove(OnClickCallback);
}

private void OnClickCallback()
{
Debug.Log("Player Clicked!");
}
}