51 lines
1.3 KiB
C#
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;
|
|
}
|
|
} |