跳到主要内容

UISafeAreaAdapter

重要 注意 提醒

Coding Style wiki


UISafeAreaAdapterUI 安全区域适配组件,依据 Screen.safeArea 自动调整指定面板 (RectTransform) 的锚点 (anchorMin / anchorMax),适配刘海、打孔与异形屏幕;分辨率变更时会自动重新适配,也可开启 refreshAlways 每帧刷新 (应对屏幕旋转)。

命名空间OxGKit.Utilities.Adapter
类型public class UISafeAreaAdapter : MonoBehaviour
源码UISafeAreaAdapter.cs
using OxGKit.Utilities.Adapter;

提醒 通过 AddComponentMenu: OxGKit/Utilities/Adapter/UISafeAreaAdapter 加入组件 (同对象仅允许一个, DisallowMultipleComponent)。

快速上手

  1. UISafeAreaAdapter 挂载于需要适配的 UI 面板上。
  2. panel 未指定时,Awake 会自动使用自身的 RectTransform
  3. Start 时自动执行第一次适配;分辨率变更时自动重新适配。
using OxGKit.Utilities.Adapter;
using UnityEngine;

public class SafeAreaDemo : MonoBehaviour
{
public UISafeAreaAdapter adapter;

private void Start()
{
// 需要应对屏幕旋转时, 可开启每帧刷新
this.adapter.refreshAlways = true;

// 或于特定时机手动刷新
this.adapter.RefreshViewSize();
}
}

通用规则

适配时机

  • Start:自动执行第一次适配。
  • LateUpdate:检测到分辨率变更时自动适配;refreshAlways = true每帧适配。
  • 手动:调用 RefreshViewSize

提醒 适配时的 Safe Area 与分辨率日志仅于数值变更时输出 (避免每帧产生字符串分配),日志通过 OxGKit.LoggingSystem 输出。


成员

成员说明
public bool refreshAlways是否每帧刷新适配 (默认 false),应对屏幕旋转等场景。
public RectTransform panel要适配的目标面板,未指定时自动使用自身的 RectTransform

方法

RefreshViewSize

public void RefreshViewSize()

依据当前 Screen.safeArea 重新计算并应用面板的 anchorMinanchorMax (以屏幕宽高归一化)。

adapter.RefreshViewSize();