using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using DG.Tweening; public class OfferStoryChainScrollRect : ScrollRect { private float[] _scrollPositions; public void Init(float[] scrollPositions) { _scrollPositions = scrollPositions; } public override void OnEndDrag(PointerEventData eventData) { base.OnEndDrag(eventData); int idx = 0; float minDistanceGap = float.MaxValue; for (int i = 0; i < _scrollPositions.Length; i++) { float distance = Mathf.Abs(content.anchoredPosition.x - _scrollPositions[i]); if (distance < minDistanceGap) { minDistanceGap = distance; idx = i; } } JumpTo(idx); } public void JumpTo(int index) { var targetPosition = new Vector2(_scrollPositions[index], content.anchoredPosition.y); // content.anchoredPosition = new Vector2(_scrollPositions[index], content.anchoredPosition.y); content.DOAnchorPos(targetPosition, 0.2f).SetEase(Ease.OutQuad); } }