官术网_书友最值得收藏!

4.3.1 UGUI事件系統(tǒng)源碼剖析

Unity3D公開了大部分UGUI系統(tǒng)源碼,除了渲染和網(wǎng)格合并算法外,組件邏輯也已經(jīng)公開。下面剖析UGUI系統(tǒng)在Unity 2017中的公開源碼。

圖4-1為UGUI內(nèi)核源碼的文件夾結(jié)構(gòu)圖。它把UGUI系統(tǒng)分為輸入事件、動畫、核心渲染三部分。

圖4-1 UGUI內(nèi)核源碼的文件夾結(jié)構(gòu)圖

其中動畫部分相對比較簡單,采用tween補間動畫的形式對顏色、位置、大小進行了漸進的操作。tween的原理是啟動一個協(xié)程,在協(xié)程里對元素的屬性進行漸進式修改,除了修改屬性數(shù)值,tween還設(shè)置了多種曲線以供選擇,比如內(nèi)翻曲線、外翻曲線等,一個數(shù)值從起點到終點的過程可以通過曲線來控制。例如,數(shù)字從0到100的變化可在3秒內(nèi)完成,如果是線性,則在第2秒時的數(shù)值應(yīng)該如下:

(100-0)×(2f/3f)=200f/3f=66.666

如果使用內(nèi)翻曲線就不是這個結(jié)果了,但它們最終都會到達100,只是過程有點“曲折”,曲線也體現(xiàn)了動畫的“有趣”。

下面重點剖析輸入事件和核心渲染這兩部分。

主站蜘蛛池模板: 南靖县| 五河县| 台东市| 建德市| 贵南县| 通山县| 白沙| 吉林市| 合肥市| 蒙阴县| 齐河县| 阳春市| 金川县| 深圳市| 苍溪县| 西峡县| 四会市| 景德镇市| 商河县| 常州市| 大城县| 沁水县| 洛川县| 安乡县| 高碑店市| 县级市| 莒南县| 康平县| 外汇| 河源市| 鄂州市| 武穴市| 华宁县| 通榆县| 盈江县| 公主岭市| 丹巴县| 岐山县| 肥东县| 山东省| 松滋市|