39 lines
1.1 KiB
C#
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);
|
|
}
|
|
}
|