見出し画像

[Unity]ScrollViewをクリックしたい

コード書いとる?

ゲームのスコアTOP20をスクロールビューで表示して、画面タップで次の画面へ遷移...と実装しようとして詰まったのでメモ書き。ここはnote

UnityのScrollView

Unity ScrollView EventTriggerでネットを検索すると...みなさんめっちゃ試行錯誤しておりました…ですよね!

EventTrigger方式だとクリックイベントをScrollViewと取り合って挙動が微妙になる...

解決策

たどり着いたのが以下の解決策

まずクリックイベントを受け付けるスクリプトを用意します

using UnityEngine;
using UnityEngine.EventSystems;


public class ScrollViewEvents : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{

  public void OnPointerDown(PointerEventData eventData)
  {
    // 何かする
  }

  public void OnPointerUp(PointerEventData eventData)
  {
    // 何かする
  }
}

これをScrollViewのViewPortオブジェクトにアタッチします

このGameObjectにアタッチ

するとあら不思議!ScrollViewの挙動はそのままでクリックイベントを横取りできるので、あとは煮るなり焼くなり好きにしてください

オマケ

OnPointerUpの際にドラッグ操作を検出したい場合は以下のようにすればOK

public void OnPointerUp(BaseEventData data)
{
    // Dragしてたら無視
    var p = data as PointerEventData;
    if (p.dragging) return;

    // 何かする
}

スッキリ!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?