UGUI的滚动窗修改
最近想尝试用unity的ugui来做一个节点化工具,发现有不少问题。我又不想大面积修改源码,通过查看ugui源码倒是想到些比较恶心的修改方法也能到达目的,特此记录一下。
方法就是利用他开放的可重载函数或者非私有变量。
举个具体的例子。比如ScrollView这个滚动窗,按下鼠标左键不放的情况下可以拖拉窗口。但是仔细观察发现左键按下的位置和实际拖拉的位置会有偏差,看源码发现OnBeginDrag这个回调是在移动一小段距离之后才会触发,对于有强迫症的人来说这就很不舒服了。


查看源码发现这个关键变量居然是私有的。。。,所幸的是下面还有一个保护型变量
既然如此那就有办法了,把原本该修改的m_PointerStartLocalCursor的偏差值加到m_ContentStartPosition上去就行了,虽然看着恶心了点,但总比重载N个虚函数要来的简单的多。。。