CanvasScaler:
這是一個(gè)理解起來(lái)相當(dāng)繁瑣復(fù)雜的一個(gè)組件,但又是一個(gè)至關(guān)重要的組件,不徹底了解它,可以說(shuō)對(duì)UGUI的布局和所謂的“自適應(yīng)”就沒(méi)有一個(gè)完整的認(rèn)識(shí)。
CanvasScale指的是UI Canvas整體的縮放比例,這個(gè)值在Canvas 的RenderMode為Screen Space – Overlay的情況下默認(rèn)為1,在Canvas 的 Render Mode為 Screen Space –Camera 的情況下則不一定為1,會(huì)受到渲染UI的攝像機(jī)參數(shù)影響(如果為Perspective 相機(jī),會(huì)受到 Field OfView影響,如果是Orthographic相機(jī),會(huì)受到Size影響)。
CanvasScaler存在的意義:
為了適應(yīng)不同的分辨率,我們可能會(huì)允許適當(dāng)?shù)腢I整體性縮放,外加一些盡可能少的布局微調(diào)。這樣就能達(dá)到一個(gè)比較理想的效果。如果沒(méi)有這個(gè)組件,Canvas的Scale默認(rèn)情況下永遠(yuǎn)固定不變,那么分辨率變化時(shí),只能單純依靠錨點(diǎn)信息去調(diào)整UI,會(huì)對(duì)整體布局產(chǎn)生較大的影響,不能夠達(dá)到“自適應(yīng)”的目的。
什么是Pixelperfect?
PixelPerfect(完美像素)指的是一個(gè)UI素材本身的像素對(duì)應(yīng)屏幕上一個(gè)像素的情況,這種情況下UI素材映射到屏幕上時(shí)沒(méi)有任何拉伸和壓縮,這種情況下UI顯示效果非常清晰完美。
Ui Scale Mode--Scale WithScreen Size
根據(jù)屏幕尺寸來(lái)調(diào)整UI的縮放值
ReferenceResolution:
參考分辨率,即一開(kāi)始制作時(shí)選定的屏幕分辨率,后面的選項(xiàng)參數(shù)都是根據(jù)它來(lái)計(jì)算的。
Screen Match Mode—MatchWidth Or Height
Match
Match是一個(gè)滑條,拉在最左時(shí)是Width ,最右時(shí)是Height,中間則是按比例混合。
當(dāng)處于最左邊時(shí),屏幕高度對(duì)于UI大小完全沒(méi)有任何影響,只有寬度會(huì)對(duì)UI大小產(chǎn)生影響。假設(shè)寬度為Reference Resolution寬度的x倍,則UI整體縮放為Reference Resolution狀態(tài)下的x倍。也就是說(shuō)只有寬度等于Reference Resolution寬度時(shí),才能做到pixel perfect,否則像素就會(huì)有拉伸
當(dāng)處于最右邊時(shí),與上述情況正好相反,決定整體縮放值的是高度,而寬度則沒(méi)有任何影響
處于中間某處時(shí),對(duì)上述兩者的影響進(jìn)行權(quán)重加成
Screen MatchMode—Expand
當(dāng)屏幕分辨率大于參考分辨率時(shí),選擇變化較小的一個(gè)方向(橫向還是縱向),作為放大Canvas Scale的標(biāo)準(zhǔn),另一方向上的變化則是在整體縮放以后再進(jìn)行補(bǔ)償性的變化。此舉旨在減少擴(kuò)大分辨率時(shí)由于非等比擴(kuò)大而對(duì)UI整體布局造成影響。適合制作較小標(biāo)準(zhǔn)尺寸,擴(kuò)充到較大屏幕。
例如:ReferenceResolution為800*600,(假設(shè)此時(shí)Canvas Scale為(1,1,1))。如果實(shí)際分辨率為800*800,那么Canvas Scale還保持為(1,1,1)因?yàn)閷挾葲](méi)有發(fā)生變化,只是單純的高度增加了200。所以勢(shì)必對(duì)布局造成一定得影響。1000*600的情況也是一樣,Canvas Scale沒(méi)有變化,只是單純寬度增加了200。但如果實(shí)際分辨率變?yōu)?000*800,那么Canvas Scale就變成(1.25,1.25,1.25)。因?yàn)閷挾仁菂⒖挤直媛蕦挾鹊?.25倍,高度是1.33倍,那么取較小的1.25。這個(gè)1.25倍的意義是:整體Canvas渲染放大1.25倍,橫向或縱向的變化超過(guò)了1.25倍,則靠拉伸Canvas來(lái)變化,此時(shí)因?yàn)檫@部分變化,可能會(huì)對(duì)布局產(chǎn)生一些相對(duì)較小的影響,例如相對(duì)位置、某些元素的長(zhǎng)寬比。
Screen MatchMode—Shrink
和Expand類似,但是更適合于縮小的情形。它會(huì)在屏幕尺寸縮小時(shí),通過(guò)縮小CanvasScale盡量減少由于非等比縮小對(duì)布局產(chǎn)生的影響。按照影響較小的一個(gè)方向縮小的比例去縮小CanvasScale,然后再通過(guò)變形調(diào)整另外一個(gè)方向。
Ui Scale Mode—ConstantPixel Size
固定的UI縮放值
Scale Factor
直接設(shè)定UI的Canvas Scale,例如,設(shè)定為2,則Canvas Scale為標(biāo)準(zhǔn)狀態(tài)下的2倍
![[UGUI]深入理解CanvasScaler ugui canvas group](http://img.413yy.cn/images/31101031/31035335t01952592da3eae630d.jpg)
愛(ài)華網(wǎng)本文地址 » http://www.klfzs.com/a/25101011/71311.html
愛(ài)華網(wǎng)



