サーチ…


コードでイベントを購読する

デフォルトでは、インスペクタを使用してイベントを購読する必要がありますが、コードで行う方がよい場合もあります。この例では、それを処理するためにボタンのclickイベントに登録します。

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Button))]
public class AutomaticClickHandler : MonoBehaviour
{
    private void Awake()
    {
        var button = this.GetComponent<Button>();
        button.onClick.AddListener(HandleClick);
    }

    private void HandleClick()
    {
        Debug.Log("AutomaticClickHandler.HandleClick()", this);
    }
}

UIコンポーネントは通常、メインのリスナーを簡単に提供します。

マウスリスナーの追加

場合によっては、コンポーネントによってネイティブに提供されていない特定のイベント、特にマウスイベントにリスナーを追加することがあります。これを行うには、 EventTriggerコンポーネントを使用して自分で追加する必要があります:

using UnityEngine;
using UnityEngine.EventSystems;

[RequireComponent(typeof( EventTrigger ))]
public class CustomListenersExample : MonoBehaviour
{
    void Start( )
    {
        EventTrigger eventTrigger = GetComponent<EventTrigger>( );
        EventTrigger.Entry entry = new EventTrigger.Entry( );
        entry.eventID = EventTriggerType.PointerDown;
        entry.callback.AddListener( ( data ) => { OnPointerDownDelegate( (PointerEventData)data ); } );
        eventTrigger.triggers.Add( entry );
    }

    public void OnPointerDownDelegate( PointerEventData data )
    {
        Debug.Log( "OnPointerDownDelegate called." );
    }
}

さまざまなイベントIDが可能です:

  • PointerEnter
  • PointerExit
  • PointerDown
  • PointerUp
  • PointerClick
  • ドラッグ
  • ドロップ
  • スクロール
  • UpdateSelected
  • 選択
  • 選択解除する
  • 移動
  • InitializePotentialDrag
  • BeginDrag
  • EndDrag
  • 提出する
  • キャンセル


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow