【unity游戲開發入門到精通——UGUI】CanvasScaler畫布縮放器組件

注意:考慮到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的縮放模式會強制變為World3D世界模式。
在這里插入圖片描述

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,如果學習過程中遇到任何問題,也歡迎你評論私信找我。

贈人玫瑰,手有余香!如果文章內容對你有所幫助,請不要吝嗇你的點贊評論和關注,你的每一次支持都是我不斷創作的最大動力。當然如果你發現了文章中存在錯誤或者有更好的解決方法,也歡迎評論私信告訴我哦!
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77099.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77099.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77099.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kubernetes控制平面組件:API Server Webhook 授權機制 詳解

云原生學習路線導航頁(持續更新中) kubernetes學習系列快捷鏈接 Kubernetes架構原則和對象設計(一)Kubernetes架構原則和對象設計(二)Kubernetes架構原則和對象設計(三)Kubernetes控…

Python自動化辦公

第五篇:Python自動化辦公:10行代碼搞定重復性工作 適合讀者:職場人士、數據分析師 | 閱讀時長:12分鐘 引言 每天重復處理Excel、PDF或郵件?Python可以幫你自動化這些枯燥任務,節省90%的時間。本文通過實際…

【3】k8s集群管理系列--包應用管理器helm之chart資源打包并推送到harbor鏡像倉庫

一、chart資源打包 helm package ./web-chart # 當前目錄會生成一個tgz的壓縮文件二、安裝help push插件(用于推送前面打包的文件,到鏡像倉庫) .1 下載help-push二進制文件 wget https://github.com/chartmuseum/helm-push/releases/down…

【SpringBoot Druid Mysql多數據源整合】

SpringBoot Druid Mysql多數據源整合 一、背景二、配置結果2.1 SpringBoot java 類配置2.1.1 啟動類配置2.1.2 java Config配置 2.2 SpringBoot yml 配置 三、mybatis插件配置3.1 PageHelper的yml配置3.2 mybatis設置自定義字段默認值 四、配置解釋 一、背景 公司項目需要連接另…

GGML源碼逐行調試(中)

目錄 前言1. 簡述2. 加載模型超參數3. 加載詞匯表4. 初始化計算上下文5. 初始化計算后端6. 創建模型張量7. 分配緩沖區8. 加載模型權重結語下載鏈接參考 前言 學習 UP 主 比飛鳥貴重的多_HKL 的 GGML源碼逐行調試 視頻,記錄下個人學習筆記,僅供自己參考&…

kubectl的使用

查看集群有多少節點 kubectl get nodes 獲取集群狀態的摘要信息(組件信息) kubectl get cs 查看所有命名空間下的所有pod的狀態和信息 kubectl get pods --all-namespaces 查看所有命名空間的狀態和信息 kubectl get namespaces /ns 查看kube-system…

git在分支上會退到某個指定的commit

1、在idea上先備份好分支(基于現有分支new branch) 2、在gitlab管理端刪除現有分支 3、在idea中大卡terminal,執行 git log 查看commit log ,找到要會退到的commit唯一碼,然后執行git reset 唯一碼 4、查看本地代碼狀態 git st…

動態路由, RIP路由協議,RIPv1,RIPv2

動態路由 1、回顧 路由:從源主機到目標主機的過程 源主機發送數據給目標主機,源主機會查看自身的路由信息 如果目標主機是自己同網段,源主機查看的是直連路由 如果目標主機和自己不同網段,源主機查看的是靜態路由、動態路由、默…

前端面試-工程化(webpack、vite)

Webpack 相關問題(25道) Webpack 的核心概念有哪些?(Entry、Output、Loader、Plugin、Module、Bundle)如何配置 Webpack 的多入口和多出口?Webpack 的 Tree Shaking 實現原理是什么?Loader 和 …

idea 2024 build菜單不見了

Q如題 idea 2024 新版UI添加build和recompile菜單 A如圖,右鍵頂部欄之后,點擊Add to Main Toolbar菜單,在里面就能找到Build菜單,添加接口。 Recompile菜單的話在Customize Toolbar中搜索添加才行。

【開源項目】Excel手撕AI算法深入理解(三):時序(RNN、mamba)

項目源碼地址:https://github.com/ImagineAILab/ai-by-hand-excel.git 一、RNN 1. RNN 的核心思想 RNN 的設計初衷是處理序列數據(如時間序列、文本、語音),其核心特點是: 隱藏狀態(Hidden State&#xff…

pycharm已有python3.7,如何新增Run Configurations中的Python interpreter為python 3.9

在 PyCharm 中,如果你已經安裝了 Python 3.9,并且希望在 Run Configurations 中新增一個 Python 3.9 的解釋器,可以按照以下步驟操作: 步驟 1:打開 PyCharm 設置 點擊 PyCharm 左上角的 File 菜單。選擇 Settings&am…

【H橋電機驅動電路原理】-學習筆記

工作原理 電路分析 這是一個由晶體管構成的 H 橋電機驅動電路 ,以下是對其各部分的介紹: 核心器件 晶體管:電路中使用了 PNP 型的 SS8550(Q5、Q6 )和 NPN 型的 SS8050(Q9、Q10、Q13、Q14 )。…

【家政平臺開發(49)】解鎖家政平臺上線密碼:服務器選型與配置全攻略

本【家政平臺開發】專欄聚焦家政平臺從 0 到 1 的全流程打造。從前期需求分析,剖析家政行業現狀、挖掘用戶需求與梳理功能要點,到系統設計階段的架構選型、數據庫構建,再到開發階段各模塊逐一實現。涵蓋移動與 PC 端設計、接口開發及性能優化,測試階段多維度保障平臺質量,…

驅動開發硬核特訓 · Day 10 (理論上篇):設備模型 ≈ 運行時的適配器機制

🔍 B站相應的視屏教程: 📌 內核:博文視頻 - 總線驅動模型實戰全解析 敬請關注,記得標為原始粉絲。 在 Linux 驅動開發中,設備模型(Device Model)是理解驅動架構的核心。而從軟件工程…

arm_math.h、arm_const_structs.h 和 arm_common_tables.h

在 ??FOC(Field-Oriented Control,磁場定向控制)?? 中,arm_math.h、arm_const_structs.h 和 arm_common_tables.h 是 CMSIS-DSP 庫的核心組件,用于實現高效的數學運算、預定義結構和查表操作。以下是它們在 FOC 控…

Android: gradient 使用

在 Android 中使用 gradient(漸變) 通常是通過 drawable 文件來設置背景。下面是可以直接用的幾種用法匯總,包括線性漸變、徑向漸變、掃描漸變(sweep)等: ? 1. Linear Gradient(線性漸變&#…

打造AI應用基礎設施:Milvus向量數據庫部署與運維

目錄 打造AI應用基礎設施:Milvus向量數據庫部署與運維1. Milvus介紹1.1 什么是向量數據庫?1.2 Milvus主要特點 2. Milvus部署方案對比2.1 Milvus Lite2.2 Milvus Standalone2.3 Milvus Distributed2.4 部署方案對比表 3. Milvus部署操作命令實戰3.1 Milv…

AI Agent 在醫療健康領域的深度應用剖析

引言 隨著人工智能技術的迅猛發展,AI Agent 在醫療健康領域展現出了巨大的應用潛力。它猶如一位智能助手,憑借其強大的數據處理和分析能力,滲透到醫療健康的各個環節,從疾病診斷、治療方案制定到患者康復監控,都發揮著…

樹莓派超全系列教程文檔--(28)boot文件夾內容

boot文件夾內容 boot 文件夾內容bootcode.binstart*.elffixup*.datcmdline.txtconfig.txtissue.txtinitramfs*ssh 或 ssh.txt設備樹blob文件 ( *.dtb )內核文件 ( *.img )overlays 文件夾 文章來源: http://raspberry.dns8844.cn/documentation 原文網址 boot 文件…