UGUI-畫(huà)布
畫(huà)布 (Canvas)?組件表示進(jìn)行 UI 布局和渲染的抽象空間。所有 UI 元素都必須是附加了畫(huà)布組件的游戲?qū)ο蟮淖訉?duì)象。從菜單 (GameObject > Create UI) 創(chuàng)建 UI 元素對(duì)象時(shí),如果場(chǎng)景中沒(méi)有畫(huà)布 (Canvas) 對(duì)象,則會(huì)自動(dòng)創(chuàng)建該對(duì)象。




所有 UI 元素使用一個(gè)畫(huà)布就足夠了,但場(chǎng)景中可以有多個(gè)畫(huà)布。此外,為了實(shí)現(xiàn)優(yōu)化目的,還可以使用嵌套的畫(huà)布,使一個(gè)畫(huà)布作為另一個(gè)畫(huà)布的子項(xiàng)。嵌套的畫(huà)布使用與其父項(xiàng)相同的渲染模式。
傳統(tǒng)上,渲染 UI 的效果就好像是直接在屏幕上繪制的簡(jiǎn)單圖形設(shè)計(jì)。也就是說(shuō),沒(méi)有攝像機(jī)觀察 3D 空間的概念。Unity 便支持這種屏幕空間渲染方式,但也允許 UI 在場(chǎng)景中渲染為對(duì)象,具體取決于?Render Mode?屬性的值??捎玫哪J桨?Screen Space - Overlay、Screen Space - Camera?和?World Space。
Screen Space - Overlay
在此模式下,畫(huà)布會(huì)進(jìn)行縮放來(lái)適應(yīng)屏幕,然后直接渲染而不參考場(chǎng)景或攝像機(jī)(即使場(chǎng)景中根本沒(méi)有攝像機(jī),也會(huì)渲染 UI)。如果更改屏幕的大小或分辨率,則 UI 將自動(dòng)重新縮放進(jìn)行適應(yīng)。UI 將繪制在所有其他圖形(例如攝像機(jī)視圖)上。

注意:Screen Space - Overlay 畫(huà)布需要存儲(chǔ)在層級(jí)視圖的頂級(jí)。如果未使用此設(shè)置,則 UI 可能會(huì)從視圖中消失。這是一項(xiàng)內(nèi)置的限制。請(qǐng)將 Screen Space - Overlay 畫(huà)布保持在層級(jí)視圖的頂級(jí)以便獲得期望的結(jié)果。
Screen Space - Camera
在此模式下,畫(huà)布的渲染效果就好像是在攝像機(jī)前面一定距離的平面對(duì)象上繪制的效果。UI 在屏幕上的大小不隨距離而變化,因?yàn)?UI 始終會(huì)重新縮放來(lái)準(zhǔn)確適應(yīng)攝像機(jī)視錐體。如果更改屏幕的大小或分辨率或更改攝像機(jī)視錐體,則 UI 將自動(dòng)重新縮放進(jìn)行適應(yīng)。場(chǎng)景中比 UI 平面更靠近攝像機(jī)的所有 3D 對(duì)象都將在 UI 前面渲染,而平面后的對(duì)象將被遮擋。

World Space
此模式將 UI 視為場(chǎng)景中的平面對(duì)象進(jìn)行渲染。但是,與?Screen Space - Camera?模式不同,該平面不需要面對(duì)攝像機(jī),可以根據(jù)喜好任意定向。畫(huà)布的大小可以使用矩形變換來(lái)設(shè)置,但畫(huà)布在屏幕上的大小將取決于攝像機(jī)的視角和距離。其他場(chǎng)景對(duì)象可以位于畫(huà)布后面、穿透畫(huà)布或位于畫(huà)布前面。

提示
請(qǐng)?jiān)趧?chuàng)建 World Space UI?頁(yè)面上閱讀有關(guān)設(shè)置世界空間畫(huà)布 (World Space Canvas) 的更多信息。
如需了解如何使畫(huà)布和 UI 縮放到不同的分辨率或?qū)捀弑?,?qǐng)參閱設(shè)計(jì)用于多種分辨率的 UI?頁(yè)面以及畫(huà)布縮放器頁(yè)面。