日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UGUI-- Canvas Scaler 分辨率自适应组件

發(fā)布時間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UGUI-- Canvas Scaler 分辨率自适应组件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、CanvasScaler是什么

用于分辨率自適應(yīng)的畫布縮放控制器,主要負(fù)責(zé)在不同分辨率下UI控件大小自適應(yīng),并不負(fù)責(zé)位置,位置由之后的RectTransform組件負(fù)責(zé),提供了3種分辨率自適應(yīng)的模式?

2、基本概念:

(1)屏幕分辨率:Game窗口中的Stats統(tǒng)計數(shù)據(jù)窗口看到的當(dāng)前“屏幕”分辨率(Screen)會參與分辨率自適應(yīng)的計算

(2)畫布大小和縮放系數(shù):選中Canvas對象后在RectTransform組件種看到的寬高和縮放(Width,Height,Scale)

寬高 * 縮放系數(shù) = 屏幕分辨率

(3)Reference Resolution:參考分辨率,在縮放模式的寬高模式中(UI Scale Mode = Scale With Screen Size)出現(xiàn)的參數(shù),參與分辨率自適應(yīng)的計算??

總結(jié):

屏幕分辨率——當(dāng)前設(shè)備的分辨率,編輯器下Game窗口中可以看到

參考分辨率——在Scale With Screen Size適配模式中出現(xiàn)的關(guān)鍵參數(shù),參與分辨率自適應(yīng)的計算

畫布寬高和縮放系數(shù)——分辨率自適應(yīng)會改變的參數(shù),通過屏幕分辨率和參考分辨率計算而來

分辨率大小自適應(yīng)——通過一定的算法以屏幕分辨率和參考分辨率參與計算得出縮放系數(shù),該系數(shù)會影響所有UI控件的縮放大小

3、CanvasScaler的三種適配模式

(1)Constant Pixel Size(恒定像素模式):無論屏幕大小如何,UI始終保持相同像素大小

Scale Factor:縮放系數(shù),按此系數(shù)縮放畫布中的所有UI元素

改變時,Canvas下的各個對象的Scale不會改變,但是Canvas的寬高和縮放系數(shù)會改變

Reference Pixels Per Unit:單位參考像素,多少像素對用Unity中的一個單位(默認(rèn)要給單位為100像素),圖片設(shè)置中的Pixels Per Unit設(shè)置,會和該參數(shù)一起參與計算

恒定像素模式的計算公式:

UI原始尺寸 = 圖片大小(像素) / (Pixels Per Unit / Reference Pixels Per Unit)

Pixels Per Unit 屬性顯示在圖片的 Inspector 窗口中

該計算公式會影響?Set Native Size 之后的圖片大小(Set Native Size 即將圖片恢復(fù)為“UI原始尺寸”)

注意:如果想讓圖片顯示在 Image 對象上,需要將圖片拖到 Image 的 Source Image 屬性上,但需要先將圖片的類型,即圖片的 Inspector 窗口中的 Texture Type 修改為 Sprite ,然后點擊 Apply后(此時圖片文件前會有一個箭頭符號)才能進(jìn)行以上操作

在該模式下不會進(jìn)行分辨率大小的自適應(yīng),會讓UI始終保持設(shè)置的尺寸大小,無論Game窗口如何縮放,相應(yīng)的UI大小都不會改變,一般在進(jìn)行游戲開發(fā)時極少使用這種模式,除非通過代碼計算來設(shè)置縮放系數(shù),即:

可以通過代碼得到屏幕分辨率,通過該分辨率可以計算得到相應(yīng)的縮放系數(shù),然后通過一定的規(guī)則計算新的縮放系數(shù),通過代碼設(shè)置Canvas的Scale Factor屬性,就可以在該模式下對不同的分辨率改變UI的大小

(2)Scale With Screen Size(縮放模式):根據(jù)屏幕尺寸進(jìn)行縮放,隨著屏幕尺寸放大縮小,最常用的模式

Reference Resolution:參考分辨率(美術(shù)方面出圖的標(biāo)準(zhǔn)分辨率)

縮放模式下的所有匹配模式都會基于參考分辨率進(jìn)行自適應(yīng)計算

Screen Match Mode:屏幕匹配模式,當(dāng)前屏幕分辨率寬高比不適用參考分辨率時(例如1920*1080的寬高比為16:9),用于分辨率大小自適應(yīng)的匹配模式:

Expand:水平或垂直拓展畫布區(qū)域,會根據(jù)寬高比的的變化放大縮小畫布,可能有黑邊:

該模式會將Canvas Size(即Canvas的寬和高)進(jìn)行寬或高擴大,讓它高于參考分辨率,計算公式是:

縮放系數(shù)(Scale) = Mathf.Min(屏幕寬/參考分辨率寬,屏幕高/參考分辨率高);

畫布尺寸=屏幕尺寸(即屏幕分辨率)/縮放系數(shù)

表現(xiàn)效果:最大程度的縮小UI元素,保留UI控件所有細(xì)節(jié),可能會留有黑邊(即有多余的畫布不顯示任何內(nèi)容,如果過寬,兩側(cè)黑邊,如果過窄,上下黑邊)

eg:假設(shè)參考分辨率為(1920,1080),屏幕分辨率為800*600,那么

縮放系數(shù)= Mathf.Min(800/1920,600/1080) = 0.41667

畫布尺寸=(800,600)/0.41667=(1920,1440)

Shrink:水平或垂直裁剪畫布區(qū)域,會根據(jù)寬高比的變化來放大縮小畫布,可能會裁剪

該模式將Canvas Size進(jìn)行寬或高收縮,讓他低于參考分辨率,計算公式是:

縮放系數(shù)(Scale) = Mathf.Max(屏幕寬/參考分辨率寬,屏幕高/參考分辨率高);

畫布尺寸=屏幕尺寸/縮放系數(shù)

表現(xiàn)效果:最大程度的放大UI元素,讓UI元素能夠填充滿畫面,可能會出現(xiàn)裁剪

Match Width Or Height:以寬高或者二者的平均值作為參考來縮放畫布區(qū)域

Match:確定用于計算的寬高匹配值

計算公式:

// 取平均值之前,先取相對寬度和高度的對數(shù)

float logWidth = Mathf.Log(屏幕寬/參考分辨率,2)

float logHeight?= Mathf.Log(屏幕高/參考分辨率,2)

// 在對數(shù)空間中變換是為了獲得更好的性能以及更準(zhǔn)確的結(jié)果

float logWeightedAverage = Mathf.Log(logWidth,logHeight,m_MatchWidthOrHeight)

scaleFactor = Mathf.Pow(2, logWeightedAverage)

表現(xiàn)效果:

主要用于只有橫屏模式或者豎屏模式的游戲,

豎屏游戲:Match = 0

將畫布寬度設(shè)置為參考分辨率的寬度,并保持比例不變,調(diào)整Game窗口高度,UI大小不會改變,屏幕越高可能會有黑邊,越矮可能會被裁剪

橫屏游戲:Match = 1

將畫布高度設(shè)置為參考分辨率的高度,并保持比例不變,調(diào)整Game窗口寬度,UI大小不會改變,屏幕越長可能會有黑邊,越短可能會被裁剪

(3)Constant Physical Size(恒定物理模式):無論屏幕大小和分辨率如何,UI元素始終保持相同物理大小(與恒定像素模式基本相同,只不過添加了不同的算法)

DPI:(Dots Per Inch,每英寸點數(shù))圖像每英寸長度內(nèi)的像素點數(shù),即像素密度,兩個擁有相同分辨率的不同尺寸大小的屏幕的DPI是不同的,屏幕小的DPI更高

Physical Unit:物理單位,使用的物理單位種類

計算公式:根據(jù)DPI算出新的Reference Pixels Per Unit(單位參考像素)

換算:1 英寸 = 2.54 cm = 25.4 mm = 72 point = 6 picas (即Physical Unit)

新單位參考像素 = 單位參考像素 * Physical Unit / Default Sprite DPI

再使用模式一:恒定像素模式的公式進(jìn)行計算:

原始尺寸 = 圖片大小(像素) / (Pixels Per Unit / 新單位參考像素)

Fallback Screen DPI:備用DPI,當(dāng)找不到設(shè)備DPI時,使用此值

Default Sprite DPI:默認(rèn)圖片DPI

恒定像素模式與恒定物理模式的區(qū)別:

相同點:都不會進(jìn)行縮放,圖片有多大顯示多大,不會進(jìn)行分辨率大小的自適應(yīng)

不同點:相同尺寸不同DPI設(shè)備像素點區(qū)別,像素點越多細(xì)節(jié)越多,同樣像素,DPI較低的設(shè)備看起來的尺寸可能會大于DPI較高的設(shè)備。

舉個例子:同樣是1920*1080的分辨率,手機的DPI高于電腦的DPI,那么一個圖片如果是5個像素點的長度,在恒定像素模式中電腦上的長度是大于手機上5個像素點的長度的,此時兩者顯示的大小就不一樣,而恒定物理模式就是為了讓手機和電腦上顯示效果在視覺上長度是相同的

特殊模式:3D模式

當(dāng)Canvas的渲染模式設(shè)置為World Space,即世界空間3D渲染模式時,這時 Canvas Scaler的UI Scale Mode縮放模式會強制變?yōu)閃orld 3D世界模式

Dynamic Pixels PerUnit:UI中動態(tài)創(chuàng)建的位圖(例如文本Text)中,單位像素數(shù)(類似密度)

Reference Pixels Per Unit:單位參考像素,多少像素對應(yīng)Unity中的一個單位(默認(rèn)一個單位為100像素)

主要用于控制該模式下的像素密度

總結(jié)

以上是生活随笔為你收集整理的UGUI-- Canvas Scaler 分辨率自适应组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。