一、CanvasScaler是什麼
CanvasScaler是Unity3D的一個組件,它主要用於Canvas縮放操作。
在Unity3D中,Canvas是2D界面UI的基本元素,CanvasScaler能夠根據不同的屏幕尺寸、分辨率等因素進行自適應的縮放操作,保障界面的美觀和良好的用戶體驗。CanvasScaler為我們提供了多種縮放模式,可以根據實際需求進行選擇。
using UnityEngine;
using UnityEngine.UI;
public class Example : MonoBehaviour
{
private CanvasScaler canvasScaler;
void Start()
{
canvasScaler = GetComponent();
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
}
}
二、CanvasScaler的縮放模式
CanvasScaler有以下幾種縮放模式:
1. Constant Pixel Size(像素大小不變)
在該模式下,屏幕上的UI將按照像素大小進行渲染,不會隨屏幕大小的變化而發生變化,適用於在所有屏幕上都需要顯示相同大小UI的情況。
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPixelSize;
2. Scale With Screen Size(根據屏幕大小縮放)
在該模式下,屏幕上的UI將根據屏幕的大小進行縮放,可以在不改變UI圖片或文字質量的情況下進行適配,適用於需要屏幕適配的情況。
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.matchWidthOrHeight = 1;
3. Constant Physical Size(物理大小不變)
在該模式下,屏幕上的UI將根據屏幕的物理大小進行渲染,適用於在不同屏幕上需要顯示相同UI物理尺寸的情況,如電視遊戲機等。
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ConstantPhysicalSize; canvasScaler.referencePixelsPerUnit = 100; canvasScaler.physicalUnit = CanvasScaler.Unit.Millimeters; canvasScaler.fallbackScreenDPI = 100;
三、CanvasScaler的屬性
CanvasScaler提供了許多屬性,用於對縮放過程進行更加細緻的調整。
1. Reference Resolution(參考分辨率)
Reference Resolution指定了屏幕寬高比為 1:1 時的分辨率。在之後的縮放過程中,CanvasScaler會根據實際屏幕的寬高比,進行適當的縮放,以使UI元素在不同的屏幕上大小相同。
canvasScaler.referenceResolution = new Vector2(1920, 1080);
2. Match Width or Height(匹配寬度或高度)
Match Width or Height屬性的值會在Scale With Screen Size模式下使用。當設置為0時,屏幕都將按照參考分辨率寬高比的相對大小進行縮放,保證所有內容都能顯示在屏幕上。當值大於0且小於等於1時,CanvasScaler會按照參考分辨率的寬高比與屏幕的實際寬高比進行比較,選擇寬高比更接近該Match值的那一邊進行縮放,從而保留更多原始UI元素的內容。而當Match設置為1時,CanvasScaler會根據屏幕寬高比變化而均勻縮放UI元素,這就意味着在橫屏和豎屏模式下,UI元素縮放的比例將是一致的。
canvasScaler.matchWidthOrHeight = 1;
3. Reference Pixels Per Unit(參考像素比)
Reference Pixels Per Unit是一個值,用於將物理像素轉換為獨立像素。在Constant Physical Size模式下,CanvasScaler會按照該值和顯示設備的屏幕DPI,將屏幕大小轉化為獨立像素值,保證在不同屏幕上顯示的物理大小都相同。
canvasScaler.referencePixelsPerUnit = 100;
4. Screen Match Mode(匹配模式)
Screen Match Mode屬性用於Scale With Screen Size模式下,用來指定Canvas在適配屏幕時的匹配方式。有兩種模式:Match Width、Match Height。當設置為Match Width模式時,Canvas會在寬度方面進行適配,保證顯示的內容完全展示在屏幕上;同理,Match Height模式時則會在高度方面適配。
canvasScaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidth;
5. Physical Unit(物理單位)
Physical Unit屬性用於Constant Physical Size模式下,用來指定在相應屏幕DPI下,物理大小所採用的單位。可選值有:Centimeters,Millimeters,Inches,Points,Picas。
canvasScaler.physicalUnit = CanvasScaler.Unit.Millimeters;
6. Fallback Screen DPI(備用屏幕DPI)
Fallback Screen DPI屬性用於Constant Physical Size模式下,當在某些設備上獲取不到實際屏幕DPI時,可以使用該屬性設定備用的屏幕DPI,以達到物理尺寸不變的效果。
canvasScaler.fallbackScreenDPI = 100;
四、CanvasScaler的使用場景
CanvasScaler可以適用於大部分UI適配場景,如PC端、移動端、平板設備等。在移動端中,不同的設備屏幕尺寸、分辨率差異較大,使用CanvasScaler能夠快速適配不同屏幕,提高用戶體驗。
需要注意的是,在CanvasScaler的使用過程中,需要對各項屬性進行詳細的配置調整,以保證UI元素的合適縮放比例。此外,對於不同的屏幕適配模式,也需要進行相應的縮放模式切換。
五、總結
CanvasScaler是Unity3D提供的一個非常實用的UI縮放組件,可以針對不同的屏幕尺寸、分辨率等因素進行適配操作,保證UI元素在不同屏幕上的大小相同。需要注意的是,使用CanvasScaler時,需要對各項屬性進行詳細的配置,以達到最佳適配效果。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/231800.html
微信掃一掃
支付寶掃一掃