-2

Unity NGUI 系统使用 ScrollRects 将可滚动元素添加到您的游戏中,但是这个 scrollrect 缺乏限制向上滚动超过某个点的能力,这是我决定实现的。

我有一个想法:让我们检查是否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使用 a float,这是一种因其不精确而臭名昭著的类型。

的描述verticalNormalizedPosition说:

垂直滚动位置为 0 到 1 之间的值,0 位于底部。

但是该函数仅在滚动矩形位于顶部或上方时才返回浮点数 1.0,如果在其他任何地方则返回 0.0。

4

1 回答 1

0

因为该set子句veritcalNormalizedPosition触发了一个主动改变滚动矩形位置的方法。只要您不弄乱该值,它将被夹在0and1get'ting 变量之间,不会触发任何行为。但是一旦你set有了变量,你就告诉NGUI引擎,“我希望它在这里。” 因此,触发了一个方法。

于 2015-09-21T21:11:18.357 回答