本文轉(zhuǎn)自Unity Connect博主?尹煜
畫布 (Canvas) 是應(yīng)該容納所有 UI 元素的區(qū)域寇钉。畫布是一種帶有畫布組件的游戲?qū)ο舐G校?UI 元素都必須是此類畫布的子項诉儒。
畫布
畫布 (Canvas) 是應(yīng)該容納所有 UI 元素的區(qū)域辐烂。畫布是一種帶有畫布組件的游戲?qū)ο笙睿?UI 元素都必須是此類畫布的子項验残。
創(chuàng)建新的 UI 元素(如使用菜單 GameObject > UI > Image 創(chuàng)建圖像)時,如果場景中還沒有畫布巾乳,則會自動創(chuàng)建畫布您没。UI 元素將創(chuàng)建為此畫布的子項。
畫布區(qū)域在 Scene 視圖中顯示為矩形胆绊。這樣可以輕松定位 UI 元素氨鹏,而無需始終顯示 Game 視圖。
畫布 使用 EventSystem 對象來協(xié)助消息系統(tǒng)压状。
所有 UI 元素使用一個畫布就足夠了仆抵,但場景中可以有多個畫布跟继。此外,為了實現(xiàn)優(yōu)化目的镣丑,還可以使用嵌套的畫布舔糖,使一個畫布作為另一個畫布的子項。嵌套的畫布使用與其父項相同的渲染模式莺匠。
傳統(tǒng)上金吗,渲染 UI 的效果就好像是直接在屏幕上繪制的簡單圖形設(shè)計。也就是說趣竣,沒有攝像機(jī)觀察 3D 空間的概念摇庙。Unity 便支持這種屏幕空間渲染方式,但也允許 UI 在場景中渲染為對象遥缕,具體取決于 Render Mode 屬性的值跟匆。可用的模式包括 Screen Space - Overlay通砍、Screen Space - Camera 和 World Space玛臂。
繪制元素的順序
畫布中的 UI 元素按照它們在 Hierarchy 中顯示的順序繪制。首先繪制第一個子項封孙,然后繪制第二個子項迹冤,依此類推。如果兩個 UI 元素重疊虎忌,則后一個元素將顯示在前一個元素之上泡徙。
要更改元素的顯示順序,只需在 Hierarchy 中拖動元素進(jìn)行重新排序膜蠢。也可以通過在變換組件上使用以下方法從腳本控制順序:SetAsFirstSibling堪藐、SetAsLastSibling 和 SetSiblingIndex。
渲染模式
畫布具有渲染模式 (Render Mode) 設(shè)置挑围,可用于在屏幕空間或世界空間中進(jìn)行渲染礁竞。
Screen Space - Overlay
在此模式下,畫布會進(jìn)行縮放來適應(yīng)屏幕杉辙,然后直接渲染而不參考場景或攝像機(jī)(即使場景中根本沒有攝像機(jī)模捂,也會渲染 UI)。如果更改屏幕的大小或分辨率蜘矢,則 UI 將自動重新縮放進(jìn)行適應(yīng)狂男。UI 將繪制在所有其他圖形(例如攝像機(jī)視圖)上。
注意:Screen Space - Overlay 畫布需要存儲在層級視圖的頂級品腹。如果未使用此設(shè)置岖食,則 UI 可能會從視圖中消失。這是一項內(nèi)置的限制舞吭。請將 Screen Space - Overlay 畫布保持在層級視圖的頂級以便獲得期望的結(jié)果泡垃。
Screen Space - Camera
在此模式下析珊,畫布的渲染效果就好像是在攝像機(jī)前面一定距離的平面對象上繪制的效果。UI 在屏幕上的大小不隨距離而變化兔毙,因為 UI 始終會重新縮放來準(zhǔn)確適應(yīng)攝像機(jī)視錐體。如果更改屏幕的大小或分辨率或更改攝像機(jī)視錐體兄春,則 UI 將自動重新縮放進(jìn)行適應(yīng)澎剥。場景中比 UI 平面更靠近攝像機(jī)的所有 3D 對象都將在 UI 前面渲染,而平面后的對象將被遮擋赶舆。
World Space
在此渲染模式下哑姚,畫布的行為與場景中的所有其他對象相同。畫布大小可用矩形變換進(jìn)行手動設(shè)置芜茵,而 UI 元素將基于 3D 位置在場景中的其他對象前面或后面渲染叙量。此模式對于要成為世界一部分的 UI 非常有用。這種界面也稱為“敘事界面”九串。
此模式將 UI 視為場景中的平面對象進(jìn)行渲染绞佩。但是,與 Screen Space - Camera 模式不同猪钮,該平面不需要面對攝像機(jī)品山,可以根據(jù)喜好任意定向。畫布的大小可以使用矩形變換來設(shè)置烤低,但畫布在屏幕上的大小將取決于攝像機(jī)的視角和距離肘交。其他場景對象可以位于畫布后面、穿透畫布或位于畫布前面扑馁。
畫布縮放器(Canvas Scaler)
畫布縮放器組件用于控制畫布中 UI 元素的整體縮放和像素密度涯呻。此縮放會影響畫布下的所有內(nèi)容,包括字體大小和圖像邊框腻要。
Constant Pixel Size 的設(shè)置:
Scale With Screen Size 的設(shè)置:
Constant Physical Size 的設(shè)置:
World Space Canvas 的設(shè)置(畫布 (Canvas) 組件設(shè)置為 World Space 時顯示):
對于設(shè)置為“Screen Space - Overlay”或“Screen Space - Camera”的畫布复罐,畫布縮放器 UI Scale Mode 可以設(shè)置為 Constant Pixel Size、Scale With Screen Size 或 Constant Physical Size雄家。
Constant Pixel Size
使用 Constant Pixel Size 模式時市栗,可在屏幕上按像素指定 UI 元素的位置和大小。這也是畫布在未附加任何畫布縮放器時的默認(rèn)功能咳短。但是填帽,借助畫布縮放器中的“Scale Factor”設(shè)置,可以向畫布中的所有 UI 元素應(yīng)用常量縮放咙好。
Scale With Screen Size
使用 Scale With Screen Size 模式時篡腌,可以根據(jù)指定參考分辨率的像素來指定位置和大小。如果當(dāng)前屏幕分辨率大于參考分辨率勾效,則畫布會保持只具有參考分辨率的分辨率嘹悼,但是會放大以便適應(yīng)屏幕叛甫。如果當(dāng)前屏幕分辨率小于參考分辨率,則畫布會相應(yīng)縮小以適應(yīng)屏幕杨伙。
如果當(dāng)前屏幕分辨率的寬高比與參考分辨率不同其监,則單獨縮放每個軸以適應(yīng)屏幕會形成非一致縮放,通常不希望發(fā)生這種情況限匣。相反抖苦,ReferenceResolution 組件會使畫布分辨率偏離參考分辨率,以便遵循屏幕的寬高比米死⌒坷可以使用 Screen Match Mode 設(shè)置控制此偏離的行為方式。
Constant Physical Size
使用 Constant Physical Size 模式時峦筒,可按物理單位(如毫米究西、點或派卡)指定 UI 元素的位置和大小。此模式要求設(shè)備正確報告其屏幕 DPI物喷。對于不報告 DPI 的設(shè)備卤材,可以指定回退 DPI。
World Space
對于設(shè)置為“World Space”的畫布峦失,可以使用畫布縮放器來控制畫布中 UI 元素的像素密度商膊。
畫布組
畫布組 (Canvas Group) 可集中控制整組 UI 元素的某些方面,而無需單獨處理每個元素宠进。畫布組的屬性會影響所在的游戲?qū)ο笠约八凶訉ο蟆?/p>
畫布組的典型用途為:
通過在窗口的游戲?qū)ο笊咸砑赢嫴冀M并控制其 Alpha 屬性來淡入或淡出整個窗口晕拆。
通過將畫布組添加到父游戲?qū)ο蟛⑵?Interactable 屬性設(shè)置為 false 來使整組控件不可交互(“灰顯”)。
通過在 UI 元素或其某個父元素上放置畫布組 (Canvas Group) 組件并將其 Block Raycasts 屬性設(shè)置為 false 來使一個或多個 UI 元素不阻止鼠標(biāo)事件材蹬。
畫布渲染器
畫布渲染 器(Canvas Renderer) 組件用于渲染畫布中包含的圖形 UI 對象实幕。
原文鏈接:https://connect.unity.com/p/canvas-hua-bu-he-ji-ben-bu-ju?app=true
戳上方鏈接下載官方app,在線技術(shù)答疑堤器,更多干貨等你來發(fā)現(xiàn)昆庇!