跳到主要内容

UISafeAreaAdapter

重要 注意 提醒

Coding Style wiki​


UISafeAreaAdapter 为 UI 安全区域适配组件,依据 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 重新计算并应用面板的 anchorMin 与 anchorMax (以屏幕宽高归一化)。

adapter.RefreshViewSize();