LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-04-23

表題の通りです。
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

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3