6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ドラッグとポインターハンドラのコールバック順序とハマりどころ (unity)

Last updated at Posted at 2019-06-15

前提

  • Unity 2018.4.2f1
  • IPointerDownHandler, IPointerUpHandler, IPointerClickHandler, IBeginDragHandler, IDragHandler, IEndDragHandlerのコールバック

発生順序

  1. OnPointerDown ~ ダウンした
  2. OnBeginDrag ~ ダウン後、最初にポインターが動いた
  3. OnDrag ~ ドラッグ開始後、さらにポインターが動いた
  4. OnPointerUp ~ アップした
  5. OnPointerClick ~ アップしたオブジェクトはダウンしたオブジェクトと同じだった
  6. OnEndDrag ~ ドラッグが終わった

ハマりどころ

  • クリックが検出されたときは、既にポインターアップ済みです。
    • 「ダウンで情報を生成してアップで破棄」とかだと、クリックでは既に破棄されていて失敗します。
    • 「ダウンで生成」、「アップの際にダウン時のオブジェクトの上にいなければ(!PointerEventData.hovered.Contains (PointerEventData.pointerPress))破棄」、「クリックで破棄」なら大丈夫のはずです。
  • ドラッグ終了が検出されたときは、既にアップ&クリック済みです。
    • 上記の「ダウンで情報を生成してアップまたはクリックで破棄」だと、同様に失敗します。
    • 上記の条件に、さらに「ドラッグ中でなければ(!PointerEventData.dragging)」を加えて、「ドラッグ終了で破棄」することになります。
6
2
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
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?