Canvas Scaler
作用:分辨率自適應,計算ui控件的縮放系數
不同分辨率下Ui控件大小自適應,不負責位置
Game窗口的Stats(統計數據 )查看屏幕分辨率
Canvas的Rect Transform組件 寬高(Width,Height)乘以縮放(X,Y)=屏幕分辨率
Reference Resolution 參與分辨率自適應的計算
適配方式UI Scale Mode :
Constant Pixel Size
不論屏幕大小 UI始終保持相同像素大小
沒有自適應效果 始終保持UI的大小
可以通過代碼 調整Scale Factor 實現縮放
Scale Factor 縮放系數 影響UI元素的縮放
Reference Pixels Per Unit: 一個單位多少像素
圖片設置中的Pixels Per Unit 和 該 參數一起計算 得到UI的大小
Set Native Size的大小 =圖片大小(像素)/ (Pixels Per Unit /Reference Pixels Per Unit)
Scale With Screen Size
根據屏幕尺寸進行縮放UI
Reference Resolution 參考分辨率
Screen Match Mode 屏幕匹配模式 屏幕寬高比例 不適用 參考分辨率比例時 使用匹配模式
1.Expand
水平或者垂直 擴展 畫布區域 根據寬高的變化縮放畫布 可能存在黑邊
對Canvas Size寬或者高進行拉伸 大于參考分辨率
縮放系數:Mathf.Min(屏幕寬/參考分辨率,屏幕高/參考分辨率高)
畫布尺寸=屏幕尺寸/縮放系數
最大程度縮小Ui 保留所有Ui細節 會有黑邊
2.Shrink
水平或者垂直 裁剪 畫布區域 根據寬高的變化縮放畫布 可能會裁剪
對Canvas Size寬或高進行收縮 小于參考分辨率
縮放系數:Mathf.Max(屏幕寬/參考分辨率,屏幕高/參考分辨率高)
最大程度放大Ui 讓UI元素能夠填滿畫面 ui可能被裁剪
3.Match Width Or Height
Match:確定用于計算的寬高屏幕匹配值
以寬高或者兩者的平均值為參考 縮放畫布
float logWidth=Mathf.Log(屏幕寬/參考分辨率寬,2);//取對數
float logHeight=Mathf.Log(屏幕高/參考分辨率高,2);//取對數
float logWeightedAverage=Mathf.Lerp(logWidth, logHeight,m_MathWidthOrHeight);
scaleFactor=Mathf.Pow(2,logWeightedAverage);
豎屏:match=0 高度增大 ui不縮放 可能有黑邊 寬度改變 ui縮放
橫屏:match=1 寬度增大 ui不縮放 可能有黑邊 高度變化 ui縮放
Constant Physical Size
無論屏幕大小和分辨率如何 Ui 元素始終保持相同物理大小
DPI:每英寸長度內的像素數目
Physical Unit 物理單位
1英寸=2.54Centimeters 厘米
=72Point 點
=6Picas 皮卡
新的單位參考像素=參考單位像素*Physical Unit / Default Sprite DPI
原始尺寸=圖片大小/(Pixels Per Unit/新單位參考像素)
Fallback Screen DPI 找不到DPI時的 備用DPI
Default Sprite DPI 默認圖片DPI
恒定像素 與 恒定物理區別
同:UI不縮放 不自適應
不同:相同尺寸 不同DPI設備下
同樣的長度下 DPI大的像素多 每個像素的長度就小
DPI小的像素少 每個像素的長度就大
恒定像素 切換到不同DPI環境下 圖片的像素不變化 但顯示的尺寸變化
恒定物理 切換到不同DPI環境下 圖片的像素和尺寸不變化
3D模式
Canvas Mode 切換到World Space
Canvas Scaler 出現3D模式
Dynamic Pixels Per Unit UI中動態創建的位圖中 單位像素數 數值增大 ui更清晰 例如圖片 文本等
總結
以上是生活随笔為你收集整理的Canvas Scaler的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lucas–kanade_Lucas–K
- 下一篇: MFC开发——点击页面生成图标功能