Unity3D :合成和发送事件

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

合成和发送事件

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

事件系统使用事件池来避免重复分配事件对象。 要合成并发送您自己的事件,请执行以下操作:

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

您可以发送操作系统事件,例如键盘和鼠标事件。为此,请使用 初始化UnityEngine.Event用户界面
工具包事件。

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

void SynthesizeAndSendKeyDownEvent(IPanel panel, KeyCode code,
     char character = '\0', EventModifiers modifiers = EventModifiers.None)
{
    // Create a UnityEngine.Event to hold initialization data.
    var evt = new Event() {
        type = EventType.KeyDownEvent,
        keyCode = code,
        character = character,
        modifiers = modifiers
    };

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

注意:不要发送不是来自操作系统且无法在类型中找到的事件。某些事件由 UI 工具包作为对内部状态更改的反应发送,不得由外部进程发送。例如,如果发送 ,可视元素假定满足该事件的基础条件,并且不会为它们设置指针捕获。这可能会破坏UnityEngine.EventPointerCaptureEvent视觉元素
并导致未定义的行为。

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :处理事件 (mvrlink.com)

下一篇:Unity3D :捕获事件 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号