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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Unity中的UI相关组件

發(fā)布時間:2024/3/13 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity中的UI相关组件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一:Canvas:渲染UI

——Overlay:覆蓋模式
類似于手機(jī)貼膜,所有UI都會顯示在場景中2D,3D物體的上層
在同一個Canvas下可以調(diào)整Canvas子物體的先后順序,層級面板中越靠上則先被渲染
多個Canvas下可以調(diào)整Canvas組件的Sort Order屬性調(diào)整渲染順序

——Camera:相機(jī)模式
Canvas只會在指定相機(jī)下被渲染
在這種模式下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)原理)

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public enum ConstantPixelScalerType {Width,Height, }public class ConstantPixelScaler : MonoBehaviour {CanvasScaler canvasScaler;public ConstantPixelScalerType type;public float rawWidth;public float rawHeight;private void Awake(){canvasScaler = GetComponent<CanvasScaler>();canvasScaler.scaleFactor = type == ConstantPixelScalerType.Width ? Screen.width / rawWidth : Screen.height / rawHeight;} }

——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 = 指定相機(jī)的size * 2 /? Screen.Height

總結(jié)

以上是生活随笔為你收集整理的Unity中的UI相关组件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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