Почему проверка, а затем установка verticalNormalizedPosition ограничивает прокрутку ScrollRect?

Система Unity NGUI использует ScrollRects для добавления прокручиваемых элементов в вашу игру, но у этого скроллректа отсутствует возможность ограничить прокрутку до определенной точки, что я решил реализовать.

У меня была идея: давайте просто проверим, ScrollRect.verticalNormalizedPosition равен 1, и если это так, установите его в 1 (1 - верхняя часть ScrollRect.)

public class scrollrectclamper: MonoBehaviour {
    ScrollRect SR;
    void Start () {
        SR= gameObject.GetComponent<ScrollRect> ();
    }
    void Update(){
        if (SR.verticalNormalizedPosition == 1) {
            SR.verticalNormalizedPosition = 1; // WHY
        }
    }
}

Это ограничивает прокрутку, хотя я даже не ожидал == 1 работать с floatТип печально известен своей неточностью.

Описание verticalNormalizedPosition говорит:

Вертикальная позиция прокрутки в виде значения от 0 до 1, где 0 внизу.

Но функция не работает, только когда возвращает float 1.0, если scrollrect находится сверху или выше, и 0.0, если это где-то еще.

1 ответ

Поскольку set пункт о veritcalNormalizedPosition запускает метод, который активно меняет положение прямоугольника прокрутки. Пока вы не связываетесь со значением, оно будет зажато между 0 а также 1 а также getЭта переменная не вызовет никаких действий. Но как только ты set переменная, вы говорите NGUI двигатель, "Я хочу, чтобы это было здесь". таким образом, метод запущен.

Другие вопросы по тегам