UGUI的滾動窗修改
最近想嘗試用unity的ugui來做一個(gè)節(jié)點(diǎn)化工具,發(fā)現(xiàn)有不少問題。我又不想大面積修改源碼,通過查看ugui源碼倒是想到些比較惡心的修改方法也能到達(dá)目的,特此記錄一下。
方法就是利用他開放的可重載函數(shù)或者非私有變量。
舉個(gè)具體的例子。比如ScrollView這個(gè)滾動窗,按下鼠標(biāo)左鍵不放的情況下可以拖拉窗口。但是仔細(xì)觀察發(fā)現(xiàn)左鍵按下的位置和實(shí)際拖拉的位置會有偏差,看源碼發(fā)現(xiàn)OnBeginDrag這個(gè)回調(diào)是在移動一小段距離之后才會觸發(fā),對于有強(qiáng)迫癥的人來說這就很不舒服了。


查看源碼發(fā)現(xiàn)這個(gè)關(guān)鍵變量居然是私有的。。。,所幸的是下面還有一個(gè)保護(hù)型變量?
既然如此那就有辦法了,把原本該修改的m_PointerStartLocalCursor的偏差值加到m_ContentStartPosition上去就行了,雖然看著惡心了點(diǎn),但總比重載N個(gè)虛函數(shù)要來的簡單的多。。。
標(biāo)簽: