Unity

[Unity] EventTrigger.On(Begin|End)Drag は IDragHandler を実装しないと動かない

表題の通りです。
UnityのuGUI上でドラッグ動作の開始/終了時に処理を実行させたい時の話です。

IBeginDragHandler - Unity スクリプトリファレンス
IEndDragHandler - Unity スクリプトリファレンス

注: IBeginDragHandler に加え IDragHandler を実装する必要があります。
注: IEndDragHandler に加え IDragHandler を実装する必要があります。

drag1.gif

IDragHandler を実装していない場合に On(Begin|End)Drag が実行されません

drag2.gif

IDragHandler を実装すると On(Begin|End)Drag が実行されます

UniRx.Triggersで実行する場合にも同様

On(Begin|End)DragAsObservable 実行時に
GetOrAddComponent される Observable(Begin|End)DragTrigger に関しても、それぞれ IBeginDragHandler / IEndDragHandler のみを実装しているため On(Begin|End)DragAsObservableのみの宣言だと動作しません

drag3.gif

明示的に this.gameObject.AddComponent<ObservableEndDragTrigger>()this.OnDragAsObservable().Subscribe(); を記載する必要があります

drag4.gif