Unity3D :合成和发送事件
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
合成和发送事件
在合成和发送自定义事件之前,请了解 UI 工具包事件系统如何分配和发送操作系统事件。
事件系统使用事件池来避免重复分配事件对象。 要合成并发送您自己的事件,请执行以下操作:
- 从事件池中获取事件对象。
- 填写事件属性。
- 将事件包含在一个块中,以确保它返回到事件池。
using
- 将事件传递给 。
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建模学习工作室整理翻译,转载请注明出处!