注意
:考慮到UGUI的內容比較多,我將UGUI的內容分開,并全部整合放在【unity游戲開發——UGUI】專欄里,感興趣的小伙伴可以前往逐一查看學習。
文章目錄
- 一、CanvasScaler畫布縮放器組件是什么
- 二、CanvasScaler的三種適配模式
- 1、Constant Pixel Size 恒定像素大小模式
- 1.1 參數介紹
- (1)`Scale Factor`:縮放系數
- (2)`Reference Pixels Per Unit`:單位參考像素
- 1.2 實戰
- 1.3 總結
- 2、Scale With Screen Size 屏幕大小縮放模式(`重要`)
- 2.1 參數介紹
- (1)Reference Resolution:參考分辨率
- (2)Screen Match Mode:屏幕匹配模式
- 1. Match Width Or Height 寬高匹配模式
- 2. Expand 拓展模式
- 3. Shrink 收縮模式
- 2.2 總結
- 3、Constant Physical Size 恒定物理模式
- 3.1 參數介紹
- (1)Physical Unit:物理單位
- (2)Fallback Screen DPI:備用DPI,當找不到設備DPI時,使用此值
- (3)Default Sprite DPI:默認圖片DPI
- 3.2 恒定像素模式和恒定物理模式區別
- 3.3 總結
- 4、World 世界模式(3D模式)
- 4.1 參數介紹
- (1)Dynamic Pixels Per Unit:每單位動態像素數
- (2)Reference Pixels Per Unit:單位參考像素
- 4.2 總結
- 專欄推薦
- 完結
一、CanvasScaler畫布縮放器組件是什么
CanvasScaler意思是畫布縮放控制器,它是用于分辨率自適應的組件。
它主要負責在不同分辨率下UI控件大小自適應,它并不負責位置,位置由之后會介紹的RectTransform
組件負責。
它主要提供了三種用于分辨率自適應的模式,我們可以選擇符合我們項目需求的方式進行分辨率自適應。
二、CanvasScaler的三種適配模式
Constant Pixel Size(恒定像素大小模式)
:無論屏幕大小如何,UI始終保持相同像素大小Scale With Screen Size(縮放大小模式)
:根據屏幕尺寸進行縮放,隨著屏幕尺寸放大縮小Constant Physical Size(恒定物理大小模式)
:無論屏幕大小和分辨率如何,Ul元素始終保持相同物理大小
1、Constant Pixel Size 恒定像素大小模式
無論屏幕大小如何,UI始終保持相同像素大小。
1.1 參數介紹
(1)Scale Factor
:縮放系數
用于指定Canvas中所有UI元素的全局縮放比例。
(2)Reference Pixels Per Unit
:單位參考像素
定義了在Unity中一個單位對應多少個屏幕像素,默認情況下,一個單位通常被設定為100像素。這一參數與圖片本身的Pixels Per Unit
設置共同作用于UI元素的最終顯示尺寸計算。具體可以參考:【零基礎入門unity游戲開發——通用篇】Sprite圖片相關設置
1.2 實戰
默認UI大小
嘗試把單位參考像素從100改成50
點擊圖片上設置原生大小,會發現圖片縮小了一半。
1.3 總結
恒定像素模式,它不會讓UI控件進行分辨率大小自適應,會讓UI控件始終保持設置的尺寸大小顯示。一般在進行游戲開發極少使用這種模式,除非通過代碼計算來設置縮放系數。
2、Scale With Screen Size 屏幕大小縮放模式(重要
)
按屏幕大小縮放的模式(簡稱:縮放模式),最常用的模式。
2.1 參數介紹
(1)Reference Resolution:參考分辨率
縮放模式下的所有匹配模式都會基于參考分辨率進行自適應計算,可以填寫常用的分辨率大小1920x1080
。
(2)Screen Match Mode:屏幕匹配模式
當前屏幕分辨率寬高比不適應參考分辨率時,用于分辨率大小自適應的匹配模式
Match Width Or Height
:以寬高或者二者的平均值作為參考來縮放畫布區域。Expand
:水平或垂直拓展畫布區域,會根據寬高比的變化來放大縮小畫布,可能有黑邊。Shrink
:水平或垂直裁剪畫布區域,會根據寬高比的變化來放大縮小畫布,可能會裁剪。
1. Match Width Or Height 寬高匹配模式
以寬高或者二者的平均值作為參考來縮放畫布區域。寬高匹配模式下可能會有裁剪也可能會有黑邊,UI大小會保持不變的。主要用于只有橫屏模式或者豎屏模式的游戲。
Match(匹配)
:確定用于計算的寬高匹配值。
最佳實戰
- 豎屏游戲:設置
Match=0
,將畫布寬度設置為參考分辨率的寬度并保持比例不變,屏幕越高可能會有黑邊
- 橫屏游戲:設置
Match=1
,將畫布高度設置為參考分辨率的高度并保持比例不變,屏幕越長可能會有黑邊。
2. Expand 拓展模式
水平或垂直拓展畫布區域,會根據寬高比的變化來放大縮小畫布,可能有黑邊。最大程度的縮小UI元素,保留UI控件所有細節。
3. Shrink 收縮模式
水平或垂直裁剪畫布區域,會根據寬高比的變化來放大縮小畫布,可能會裁剪。最大程度的放大UI元素,讓UI元素能夠填滿畫面。
2.2 總結
游戲開發一般都使用Scale With Screen Size
縮放模式。
使用建議
- 存在橫豎屏切換,選擇
Expand
(拓展匹配,有黑邊)和Shrink
(收縮匹配,有裁剪) - 不存在橫豎屏切換(定死的橫屏或者豎屏游戲),使用
Match Width or Height
(寬高匹配)模式。橫屏游戲Match=1
,豎屏游戲Match=0
。 - 存在橫豎屏切換,其實也可以使用
Match Width or Height
(寬高匹配)模式,我們只需要書寫代碼,根據橫豎屏判斷,去動態的設置Match的值即可。
之前我寫的XYFrame
框架里封裝UI系統時就很好的利用了這一點,具體參考:【unity框架開發10】從零手搓一個UI管理器/UI框架,自帶一個提示界面,還有自帶DOTween動畫效果
3、Constant Physical Size 恒定物理模式
恒定物理尺寸模式(簡稱:恒定物理模式)
3.1 參數介紹
DPI
是什么?:(Dots Per Inch,每英寸點數)圖像每英寸長度內的像素點數
(1)Physical Unit:物理單位
使用的物理單位種類
(2)Fallback Screen DPI:備用DPI,當找不到設備DPI時,使用此值
(3)Default Sprite DPI:默認圖片DPI
3.2 恒定像素模式和恒定物理模式區別
-
相同點:他們都不會進行縮放,圖片有多大顯示多大,使用他們不會進行分辨率大小自適應。
-
不同點:
恒定像素模式
固定像素數量(如5x5
像素),物理尺寸隨 DPI 變化。 低 DPI 設備上顯示更大(像素稀疏),高 DPI 設備上顯示更小(像素密集)。恒定物理模式
固定物理尺寸(如1x1厘米
),動態調整像素數量以適應 DPI。 高 DPI 設備需要更多像素,低 DPI 設備需要更少像素。
3.3 總結
恒定物理模式不會讓UI控件進行分辨率大小自適應,會讓UI控件始終保持設置的尺寸大小顯示,而且會根據設備DP進行計算,讓在不同設備上的顯示大小更加準確。
一般在進行游戲開發極少使用
這種模式
4、World 世界模式(3D模式)
其實CanvasScaler還有第四種適配模式——World 世界模式
。當Canvas的渲染模式設置為世界空間
3D渲染模式時,Canvas Scaler的縮放模式會強制變為World
3D世界模式。
4.1 參數介紹
(1)Dynamic Pixels Per Unit:每單位動態像素數
UI中動態創建的位圖(例如文本)中,單位像素數(類似密度)。
Dynamic Pixels Per Unit
越大text文本的文字越清晰
(2)Reference Pixels Per Unit:單位參考像素
多少像素對應Unity中的一個單位(默認一個單位為100像素)。
4.2 總結
3D模式只有在3D渲染模式下才會啟用的模式,主要用于控制該模式下的像素密度。該模式了解即可,一般不修改。
專欄推薦
地址 |
---|
【unity游戲開發入門到精通——C#篇】 |
【unity游戲開發入門到精通——unity通用篇】 |
【unity游戲開發入門到精通——unity3D篇】 |
【unity游戲開發入門到精通——unity2D篇】 |
【unity實戰】 |
【制作100個Unity游戲】 |
【推薦100個unity插件】 |
【實現100個unity特效】 |
【unity框架/工具集開發】 |
【unity游戲開發——模型篇】 |
【unity游戲開發——InputSystem】 |
【unity游戲開發——Animator動畫】 |
【unity游戲開發——UGUI】 |
【unity游戲開發——聯網篇】 |
【unity游戲開發——優化篇】 |
【unity游戲開發——shader篇】 |
完結
好了,我是向宇
,博客地址:https://xiangyu.blog.csdn.net,如果學習過程中遇到任何問題,也歡迎你評論私信找我。
贈人玫瑰,手有余香!如果文章內容對你有所幫助,請不要吝嗇你的點贊評論和關注
,你的每一次支持
都是我不斷創作的最大動力。當然如果你發現了文章中存在錯誤
或者有更好的解決方法
,也歡迎評論私信告訴我哦!