網(wǎng)站工信部公安備案查詢(xún)個(gè)人主頁(yè)網(wǎng)頁(yè)設(shè)計(jì)模板
UI最重要的兩部分
- UI是如何渲染出來(lái)的
- 點(diǎn)擊事件如何觸發(fā)
- 何時(shí)發(fā)生UI重繪
1:UI如何渲染出來(lái)的
UI渲染一定是有頂點(diǎn)的,沒(méi)有頂點(diǎn)就沒(méi)法確定貼圖的采樣,UGUI的頂點(diǎn)在一張Mesh上創(chuàng)建,經(jīng)過(guò)渲染管線UI就渲染到屏幕上了,UI的渲染和3D模型的渲染本質(zhì)上是沒(méi)有區(qū)別的。
2:點(diǎn)擊事件如何觸發(fā)
UGUI里有個(gè)很重要的組件,EventSystem,還有一個(gè)非常重要的函數(shù)RaycastAll(),主要是獲取目標(biāo)。這個(gè)方法會(huì)首先獲取所有的BaseRaycast對(duì)象,調(diào)用其Raycast方法,然后對(duì)最后得到的結(jié)果進(jìn)行排序(大部分情況下按深度進(jìn)行排序,也有一些情況下會(huì)使用距離、排序順序)
所以結(jié)論就是UGUI的事件觸發(fā)是通過(guò)射線實(shí)現(xiàn)的。
3:何時(shí)發(fā)生UI重繪
主動(dòng)重繪
Rebuild方法是暴露出來(lái)的,但重繪的前提是有頂點(diǎn)數(shù)據(jù)或者材質(zhì)球發(fā)生了變化才會(huì)發(fā)生重繪。如果你不想下一幀重繪,則可以主動(dòng)調(diào)用,我目前沒(méi)見(jiàn)過(guò)有主動(dòng)調(diào)用的需求。
被動(dòng)Tick重繪
被動(dòng)重繪就很好理解了,因?yàn)閁GUI的底層是每一幀都會(huì)檢查是否有臟數(shù)據(jù),如果有臟數(shù)據(jù)則會(huì)重新組裝網(wǎng)格,并進(jìn)入渲染流程。