Ejemplo n.º 1
0
    private IEnumerator __RecalcLayout()
    {
        yield return(new WaitForEndOfFrame());

        trace("ScrollSnap_v2 - RecalculateLayout: " + container.childCount);

        _scrollRect.enabled = true;

        for (int c = 0; c < _numElements; c++)
        {
            var snap = _snapElements[c] = new SnapElement();
            snap.rect = (RectTransform)container.GetChild(c);
            snap.id   = c;
        }

        var snap0 = _snapElements[0].rect.anchoredPosition;
        var snap1 = _snapElements[1].rect.anchoredPosition;

        _distBetweenEach = Mathf.Abs(snap0.x - snap1.x);

        if (_distBetweenEach <= 0.001)
        {
            traceError("Distance is too small!");
            yield break;
        }

        _posNow = _posLast = CurrentX;

        _isRecalcOK = true;
    }
Ejemplo n.º 2
0
    private void FindClosestSnapElement()
    {
        float centerX = centerReference.position.x - _posDiff * 2;

        SnapElement minSnap = null;

        for (int s = 0; s < _numElements; s++)
        {
            var snap = _snapElements[s];
            snap.distance = Math.Abs(centerX - snap.rect.position.x);
            if (minSnap == null || snap.distance < minSnap.distance)
            {
                minSnap = snap;
            }
        }

        _snapCurrent = minSnap;
    }