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