MIF_E31230101/Assets/Script Manager/SafeArea.cs

51 lines
1.3 KiB
C#

using UnityEngine;
public class SafeArea : MonoBehaviour
{
RectTransform rectTransform;
Rect lastSafeArea = new Rect(0, 0, 0, 0);
Vector2 lastScreenSize = new Vector2(0, 0);
ScreenOrientation lastOrientation = ScreenOrientation.AutoRotation;
void Awake()
{
rectTransform = GetComponent<RectTransform>();
Refresh();
}
void Update()
{
if (lastSafeArea != Screen.safeArea ||
lastScreenSize.x != Screen.width ||
lastScreenSize.y != Screen.height ||
lastOrientation != Screen.orientation)
{
Refresh();
}
}
void Refresh()
{
Rect safeArea = Screen.safeArea;
if (safeArea != lastSafeArea) ApplySafeArea(safeArea);
}
void ApplySafeArea(Rect r)
{
lastSafeArea = r;
lastScreenSize.x = Screen.width;
lastScreenSize.y = Screen.height;
lastOrientation = Screen.orientation;
Vector2 anchorMin = r.position;
Vector2 anchorMax = r.position + r.size;
anchorMin.x /= Screen.width;
anchorMin.y /= Screen.height;
anchorMax.x /= Screen.width;
anchorMax.y /= Screen.height;
rectTransform.anchorMin = anchorMin;
rectTransform.anchorMax = anchorMax;
}
}