为什么检查然后设置verticalNormalizedPosition限制ScrollRect滚动?

时间:2015-09-21 21:01:36

标签: c# unity3d 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位于底部。

但是如果scrollrect位于顶部或更高位置,那么函数只会被破坏,只返回浮点数1.0,如果它位于其他位置,则返回0.0。

1 个答案:

答案 0 :(得分:0)

因为set的{​​{1}}子句触发了一个主动改变滚动矩形位置的方法。只要你没有弄乱价值,它就会在veritcalNormalizedPosition0以及1之间进行限制,变量不会触发任何行为。但是只要你get变量,你就会告诉set引擎,&#34;我希望它在这里。&#34;因此,一种方法被解雇了。