#nullable enable using UnityEngine; namespace ReplacedPerson.Runtime { [ExecuteAlways] public sealed class ReplacedSafeArea : MonoBehaviour { private RectTransform? _rectTransform; private Rect _lastSafeArea; private Vector2Int _lastScreen; private void OnEnable() => Apply(); private void OnRectTransformDimensionsChange() => Apply(); private void Apply() { if (Screen.width <= 0 || Screen.height <= 0) return; var safe = Screen.safeArea; var screen = new Vector2Int(Screen.width, Screen.height); if (safe == _lastSafeArea && screen == _lastScreen) return; if (_rectTransform == null) _rectTransform = GetComponent(); if (_rectTransform == null) return; _rectTransform.anchorMin = new Vector2(safe.xMin / Screen.width, safe.yMin / Screen.height); _rectTransform.anchorMax = new Vector2(safe.xMax / Screen.width, safe.yMax / Screen.height); _rectTransform.offsetMin = Vector2.zero; _rectTransform.offsetMax = Vector2.zero; _lastSafeArea = safe; _lastScreen = screen; } } }