カスタムイベントを統合して送信する前に、UI Toolkit のイベントシステムがオペレーティングシステムのイベントをどのように割り当てて送信するかを理解しておく必要があります。
イベントシステムはイベントオブジェクトの割り当ての繰り返しを避けるためにイベントのプールを使用します。イベントを統合して送信するには、以下の手順でイベントを割り当てて送信する必要があります。
using
ブロックで囲み、イベントプールに確実に返却されるようにします。element.SendEvent()
に渡します。If you want to send events that usually come from the operating system, such as keyboard events and some mouse events, use a UnityEngine.Event
to initialize the UI Toolkit event.
次の例は、イベントを統合して送信する方法を示しています。
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);
}
}