カスタムイベントを統合して送信する前に、UIElement がオペレーティングシステムのイベントをどのように割り当て、送信するかを理解する必要があります。
UIElements はイベントオブジェクトの割り当ての繰り返しを避けるためにイベントのプールを使用します。イベントを統合して送信するには、以下の手順でイベントを割り当てて送信する必要があります。
using
ブロックで囲み、イベントプールに確実に返却されるようにします。element.SendEvent()
に渡します。キーボードイベントやマウスイベントなど、通常オペレーティングシステムから来るイベントを送信したい場合は、UnityEngine.Event
を使用して UIElements イベントを初期化します。
次の例は、イベントを統合して送信する方法を示しています。
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))
{
UIElementsUtility.eventDispatcher.DispatchEvent(keyDownEvent, panel);
}
}