Почему проверка, а затем установка 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
двигатель, "Я хочу, чтобы это было здесь". таким образом, метод запущен.