Version: 2020.3
处理事件
事件参考

合成事件

在合成和发送自定义事件之前,应了解 UI 工具包事件系统如何分配和发送操作系统事件。

事件系统使用事件池来避免重复分配事件对象。要合成和发送自定义事件,应按照相同的步骤分配和发送事件:

  1. 从事件池中获取一个事件对象。
  2. 填写事件属性。
  3. 将事件包含在 using 代码块中以确保其返回到事件池。
  4. 将事件传递给 element.SendEvent()

如果要发送通常来自操作系统的事件,例如键盘事件和一些鼠标事件,请使用 UnityEngine.Event 来初始化 UI 工具包事件。

以下示例演示了如何合成和发送事件:

void SynthesizeAndSendKeyDownEvent(IPanel panel, KeyCode code,
     char character = '\0', EventModifiers modifiers = EventModifiers.None)
{
    // 创建 UnityEngine.Event 以保存初始化数据。
    // 此外,此事件将转发给 IMGUIContainer.m_OnGUIHandler
    var evt = new Event() {
        type = EventType.KeyDownEvent,
        keyCode = code,
        character = character,
        modifiers = modifiers
    };

    using (KeyDownEvent keyDownEvent = KeyDownEvent.GetPooled(evt))
    {
        panel.SendEvent(keyDownEvent);
    }
}


  • 2018–11–02 页面已修订
处理事件
事件参考