转载[UGUI]深入理解Canvas Scaler
轉載
Canvas Scaler:
這是一個理解起來相當繁瑣復雜的一個組件,但又是一個至關重要的組件,不徹底了解它,可以說對UGUI的布局和所謂的“自適應”就沒有一個完整的認識。
Canvas Scale指的是UI Canvas整體的縮放比例,這個值在Canvas 的Render Mode為 Screen Space – Overlay 的情況下默認為1,在 Canvas 的 Render Mode 為 Screen Space – Camera 的情況下則不一定為1,會受到渲染UI的攝像機 參數影響(如果為Perspective 相機,會受到 Field Of View影響,如果是 Orthographic相機,會受到 Size影響)。
Canvas Scaler存在的意義:
為了適應不同的分辨率,我們可能會允許適當的UI整體性縮放,外加一些盡可能少的布局微調。 這樣就能達到一個比較理想的效果。如果沒有這個組件,Canvas的Scale默認情況下永遠固定不變,那么分辨率變化時,只能單純依靠錨點信息去調整UI,會對整體布局產生較大的影響,不能夠達到“自適應”的目的。
什么是Pixelperfect?
PixelPerfect(完美像素)指的是一個UI素材本身的像素對應屏幕上一個像素的情況,這種情況下UI素材映射到屏幕上時沒有任何拉伸和壓縮,這種情況下UI顯示效果非常清晰完美。
Ui Scale Mode–Scale With Screen Size
根據屏幕尺寸來調整UI的縮放值
Reference Resolution:
參考分辨率,即一開始制作時選定的屏幕分辨率,后面的選項參數都是根據它來計算的。
Screen Match Mode—Match Width Or Height
Match
Match是一個滑條,拉在最左時是Width ,最右時是Height,中間則是按比例混合。
當處于最左邊時,屏幕高度對于UI大小完全沒有任何影響,只有寬度會對UI大小產生影響。假設寬度為Reference Resolution寬度的x倍,則UI整體縮放為Reference Resolution狀態下的x倍。也就是說只有寬度等于Reference Resolution寬度時,才能做到pixel perfect,否則像素就會有拉伸
當處于最右邊時,與上述情況正好相反,決定整體縮放值的是高度,而寬度則沒有任何影響
處于中間某處時,對上述兩者的影響進行權重加成
Screen Match Mode—Expand
當屏幕分辨率大于參考分辨率時,選擇變化較小的一個方向(橫向還是縱向),作為放大Canvas Scale的標準,另一方向上的變化則是在整體縮放以后再進行補償性的變化。此舉旨在減少擴大分辨率時由于非等比擴大而對UI整體布局造成影響。適合制作較小標準尺寸,擴充到較大屏幕。
例如:Reference Resolution為800600,(假設此時Canvas Scale為(1,1,1))。如果實際分辨率為800800,那么Canvas Scale還保持為(1,1,1)因為寬度沒有發生變化,只是單純的高度增加了200。所以勢必對布局造成一定得影響。1000600的情況也是一樣,Canvas Scale沒有變化,只是單純寬度增加了200。但如果實際分辨率變為1000800,那么Canvas Scale就變成(1.25,1.25,1.25)。因為寬度是參考分辨率寬度的1.25倍,高度是1.33倍,那么取較小的1.25。 這個1.25倍的意義是:整體Canvas渲染放大1.25倍,橫向或縱向的變化超過了1.25倍,則靠拉伸Canvas來變化,此時因為這部分變化,可能會對布局產生一些相對較小的影響,例如相對位置、某些元素的長寬比。
Screen Match Mode—Shrink
和Expand類似,但是更適合于縮小的情形。它會在屏幕尺寸縮小時,通過縮小CanvasScale盡量減少由于非等比縮小對布局產生的影響。按照影響較小的一個方向縮小的比例去縮小CanvasScale,然后再通過變形調整另外一個方向。
Ui Scale Mode—Constant Pixel Size
固定的UI縮放值
Scale Factor
直接設定UI的Canvas Scale,例如,設定為2,則Canvas Scale為標準狀態下的2倍
總結
以上是生活随笔為你收集整理的转载[UGUI]深入理解Canvas Scaler的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse提示:“The super
- 下一篇: 【调剂】燕山大学电气工程学院付荣荣老师接