うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】EventSystems の Interface 処理をスクリプトから呼び出す

ExecuteEvents.Execute を利用することで その GameObject が所持している
コンポーネントに対して Event を実行することができます

EventSystems.ExecuteEvents-Execute - Unity スクリプトリファレンス

対応している interface は以下です

  • IBeginDragHandler
  • ICancelHandler
  • IDeselectHandler
  • IDragHandler
  • IDropHandler
  • IEndDragHandler
  • IInitializePotentialDragHandler
  • IMoveHandler
  • IPointerClickHandler
  • IPointerDownHandler
  • IPointerEnterHandler
  • IPointerExitHandler
  • IPointerUpHandler
  • IScrollHandler
  • ISelectHandler
  • ISubmitHandler
  • IUpdateSelectedHandler

サンプル

interface を継承している GameObject を渡すことで interface を 呼び出すことができます

// 各Interface で利用するパラメータを適切に設定する必要がある
var eventData = new PointerEventData();
eventData.position = position;
eventData.pressPosition = position;
eventData.button = PointerEventData.InputButton.Left;

ExecuteEvents.Execute<IPointerDownHandler>(gameObject, eventData, (handler, ev) => handler.OnPointerEnter((PointerEventData)ev));