canvas

計算機術語

Canvas 中文名稱叫“畫布”,它是遊戲中所有UI組件的“容器”。一個場景中,可以允許多個Canvas對象的存在,還允許Canvas之間可以進行“嵌套”使用。需要注意的是,場景中的任何一個UI對象,都肯定是某個Canvas對象的“子級”。

內容簡介


1、Canvas
Canvas(畫布)容納所有UI元素。Canvas是一個掛載了Canvas Component組件的Game Object,所有UI元素都必須是它的子節點。【類似NGUI的UIRoot】
若想創建一個UI元素(比如Image),點擊菜單Game Object > UI >Image即可。若當前場景中無Canvas,則自動創建一個Canvas,且剛建的UI元素會自動設為此Canvas的子節點。
在Scene視圖中Canvas區域以一個矩形顯示,幫助查看全部UI元素的位置,而不必切換到Game視圖。
Canvas使用EventSystem作為消息系統。
1.1 Draw order of elements
UI元素的繪製順序就是它們在Hierarchy視圖的排列順序,也即由上至下依次繪製。假如兩個UI元素出現重疊,則後來著繪製於先來著之上。【區別於NGUI的UIWidget.depth】
若想更改UI元素繪製順序,只需在Hierarchy視圖中拖拽它們,變更它們在Hierarchy視圖的順序。當然,也可通過Transform的腳本方法SetAsFirstSibling()、SetAsLastSibling()、SetSiblingIndex()來動態修改節點順序。
1.2 Render Modes
Canvas的渲染模式(Render Mode)可選Screen Space或World Space。
1.2.1 Screen Space - Overlay
此模式下,UI元素在屏幕頂層。若屏幕解析度變更,則Canvas自動調整自身尺寸作自適應。(滿屏顯示,不受Camera屬性值影響)
1.2.2 Screen Space - Camera
此模式類似Screen Space - Overlay,但區別是此模式將Canvas放置於某個Camera前固定距離。此Camera負責渲染所有UI元素,則攝像機參數(Camera Settings)直接影響UI表現。比如Camera是透視模式(Perspective),則UI元素會基於Field of View的值而扭曲變形。同樣的,若屏幕解析度變更,或者視覺平截體(CameraFrustrum)改變,則Canvas自動調整自身尺寸作自適應。
1.2.3 World Space
此模式下,Canvas及其子節點與場景中其他Game Object並無區別。此時Canvas尺寸可通過RectTransform來手工設置,並且UI元素的繪製位置、順序通過自身在3D世界的實際坐標來決定。當UI元素應用為3D世界成員時,此模式十分奏效。