Files
ft/Client/Assets/Scripts/UI/OfferStoryChain/OfferStoryChainScrollRect.cs
2026-06-29 21:18:33 +08:00

39 lines
1.1 KiB
C#

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);
}
}