![見出し画像](https://assets.st-note.com/production/uploads/images/102735621/rectangle_large_type_2_004eccd16ad675fcc52e241d0252da5a.png?width=1200)
[Unity]ScrollViewをクリックしたい
コード書いとる?
![](https://assets.st-note.com/img/1681191812455-bP4Ckur6aG.png?width=1200)
ゲームのスコア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オブジェクトにアタッチします
![](https://assets.st-note.com/img/1681191679935-S9okls3cfY.png)
するとあら不思議!ScrollViewの挙動はそのままでクリックイベントを横取りできるので、あとは煮るなり焼くなり好きにしてください
オマケ
OnPointerUpの際にドラッグ操作を検出したい場合は以下のようにすればOK
public void OnPointerUp(BaseEventData data)
{
// Dragしてたら無視
var p = data as PointerEventData;
if (p.dragging) return;
// 何かする
}
スッキリ!
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?