[英]UNITY: How to get the coordinates of the SafeArea rect?
我正在 Unity 中為 Android Portrait 模式開發一個項目。 我會不斷修改兩個 RawImage 的紋理,問題是圖像的寬度和高度必須相同(1080x1080、800x800)1080x1079 是錯誤的。 因為現在很多手機都有缺口,我不得不在 SafeArea 矩形內維護所有 UI 元素。 但是,我不知道如何獲取 SafeArea 矩形相對於顯示器的 y 坐標。 這是一張照片:
因此,我只需要獲取 SafeArea 矩形的 y 坐標,根據我的猜測,對於示例中的電話,y 坐標應該是 100 像素左右的高度。 先感謝您。
如果您使用的是UI Scale Mode: Scale with screen size就像這張圖片,這里是我的自適應 RectTransform 解決方案與您的安全區域(僅垂直):
using UnityEngine;
using UnityEngine.UI;
public class MySafeArea : MonoBehaviour
{
private CanvasScaler canvasScaler;
private float bottomUnits, topUnits;
void Start()
{
canvasScaler = FindObjectOfType<CanvasScaler>();
ApplyVerticalSafeArea();
}
public void ApplyVerticalSafeArea()
{
var bottomPixels = Screen.safeArea.y;
var topPixel = Screen.currentResolution.height - (Screen.safeArea.y + Screen.safeArea.height);
var bottomRatio = bottomPixels / Screen.currentResolution.height;
var topRatio = topPixel / Screen.currentResolution.height;
var referenceResolution = canvasScaler.referenceResolution;
bottomUnits = referenceResolution.y * bottomRatio;
topUnits = referenceResolution.y * topRatio;
var rectTransform = GetComponent<RectTransform>();
rectTransform.offsetMin = new Vector2(rectTransform.offsetMin.x, bottomUnits);
rectTransform.offsetMax = new Vector2(rectTransform.offsetMax.x, -topUnits);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.