demo
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#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<RectTransform>();
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user