Unity中的UI相关组件
一:Canvas:渲染UI
——Overlay:覆蓋模式
類似于手機貼膜,所有UI都會顯示在場景中2D,3D物體的上層
在同一個Canvas下可以調(diào)整Canvas子物體的先后順序,層級面板中越靠上則先被渲染
多個Canvas下可以調(diào)整Canvas組件的Sort Order屬性調(diào)整渲染順序
——Camera:相機模式
Canvas只會在指定相機下被渲染
在這種模式下Canvas的x軸和y軸坐標(biāo)就是指定Camera的x和y坐標(biāo),z軸坐標(biāo)是指定Camera的z坐標(biāo)+Canvas組件的Z坐標(biāo)(Plane Distance屬性數(shù)值)
這種模式下的渲染順序作用大小:Camera的Depth>Sorting Layer>Order in Layer>Plane Distance
——World Space:世界空間模式
前兩種模式的Rect Transform都是不可修改的,而世界空間模式可以自定義Rect Transform的數(shù)值,常用于人物血條的顯示
畫布和世界空間的比例是100:1,使用世界空間模式時一般將Canvas的Scale設(shè)置為0.01,就和世界空間的比例一致了
二:Canvas Scaler:UI適配
Unity單位與像素之間的關(guān)系:首先根據(jù)每個圖片導(dǎo)入設(shè)置中的Pixels Per Unit(每個Unity單位代表多少個像素)計算出當(dāng)前圖片代表多少個Unity單位,例如一張分辨率是200*200的圖片,Pixels Per Unit設(shè)置為100,則這張圖片的長和寬都代表2個Unity單位,再根據(jù)Canvas Scaler組件的Reference?Pixels Per Unit屬性(每個Unity單位代表多少個像素)計算出真實渲染在Canvas上的分辨率
——Constant Pixel Size:固定像素模式
在此模式下,無論屏幕分辨率尺寸大小怎么變化,UI像素保持不變,想要實現(xiàn)不同分辨率下的適配需要調(diào)整Scale Factor數(shù)值(Scale With Screen Size的實現(xiàn)原理)
——Scale With Screen Size:根據(jù)屏幕分辨率適配(最常用的適配方式)
此模式的實現(xiàn)原理其實就是調(diào)整Scale Facto的值
一般橫版游戲Match設(shè)置為1,根據(jù)Height適配,也就是屏幕寬度對UI元素大小沒影響
豎版游戲Match設(shè)置為0,根據(jù)Width適配,也就是屏幕高度對UI元素大小沒影響
——Constant Physical Size:固定物理模式
基本不常用
三:Graphic Raycaster:UI射線檢測
這個組件用于UI元素的交互,一個Canvas下的UI元素想要響應(yīng)射線檢測必須在Canvas上掛在此組件
Ignore Reversed Graphics:是否忽略反轉(zhuǎn)圖像,圖片旋轉(zhuǎn)180度后是否還可以響應(yīng)射線
Blocking Objects和Blocking Mask:射線檢測可以被哪些類型的碰撞器所阻擋(Overlay渲染模式下無效)
四:Canvas Group:UI統(tǒng)一管理
Canvas Group的作用是該元素下的所有元素,包括當(dāng)前元素
例如想修改一個元素下的所有元素的透明度,可以在最父物體上掛載一個Canvas Group組件并控制Alpha值,而不用遍歷所有元素
Alpha:透明度
Interactable:是否可以交互(如果子對象有多個Canvas,會影響所有子對象的可交互功能)
Blocks Raycasts:是否可以接受射線檢測(如果子對象有多個Canvas,只會影響當(dāng)前Canvas下對象的可交互功能)
Ignore Parent Groups:是否忽略父物體的Canvas Group影響
五:Content Size Fitter:內(nèi)容適配
常用用文本框或滑動列表的自動適配
Horizontal Fit:水平適配(一般選Perferred Size)
Vertical Fit:垂直適配(一般選Perferred Size)
六:一些數(shù)值的計算
——Canvas上RectTransform的Scale
scale = 指定相機的size * 2 /? Screen.Height
總結(jié)
以上是生活随笔為你收集整理的Unity中的UI相关组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员软技能:职场、学习、生活,代码之外
- 下一篇: 我的世界bukkit服务器开发教程第一章