2015-09-21 60 views
-2

Unity NGUI系統使用ScrollRects將可滾動元素添加到您的遊戲中,但此滾動功能無法限制向上滾動某個點的能力,這是我決定實施的。爲什麼檢查然後設置verticalNormalizedPosition限制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 
     } 
    } 
} 

這限制雖然我甚至滾動甚至不希望== 1float一起工作,這種類型的不精確性是臭名昭着的。

verticalNormalizedPosition的描述說:

垂直滾動位置爲0和1之間的值,其中0是在底部。

但是,函數被打破,只有當scrollrect在頂部或上面時纔會返回浮點數1.0,如果是在其他地方,則爲0.0。

+3

'== 1'可能會導致隱式轉換爲整數。 –

+5

如何發佈幾行代碼,我們可以用來重現您的問題,而不是發佈一個長篇故事? – Eser

+0

幫助我們幫助你。考慮向我們展示你的代碼片段和你得到的結果,而不是用自然語言描述它們。 –

回答

0

由於veritcalNormalizedPositionset子句觸發了一種主動更改滾動矩形位置的方法。只要你不搗亂這個值,它將在01get之間夾住,這個變量不會觸發任何行爲。但是,只要你set變量,你告訴NGUI引擎,「我希望這是在這裏。」因此,一種方法被解僱。