← Voltar ao blog

Safe Area da UI de Jogo e QA de Dispositivos: Ordem de Debug e Correções em Prefabs

Quando o Editor Unity parece certo mas o notch corta o HUD ou os toques falham: classifique falhas, depure Canvas Scaler e Screen.safeArea, corrija Prefabs vs reexportação do Studio.

Publicado
  • game-ui-design
  • game-dev-ai
  • ui-to-engine
  • safe-area
  • unity
  • godot
  • cocos
  • vberai
  • qa
  • 2026
Safe Area da UI de Jogo e QA de Dispositivos: Ordem de Debug e Correções em Prefabs

O relatório mais comum: a Game view parece certa, mas em um celular alto o HUD fica sob o notch, ou os botões parecem tocáveis mas os toques erram. Safe Area não é “ajustar a âncora”—é política do Canvas raiz, fundo full-bleed vs conteúdo com inset, e se o safeArea em runtime corresponde ao canal.

classes de falha, ordem de debug do Unity UGUI, regras de correção em Prefabs e ressalvas de canal/mini-game. As marcas de safe-zone do item 7 do handoff de design estão resumidas em “o que o design deve fornecer”; o escopo de dispositivos do item 1 de pré-lançamento é expandido aqui—não é uma repetição do checklist de engine + MCP de Raycast / primeiro Play.

Godot / Cocos: Mapeie para DisplayServer.get_display_safe_area() / widgets SafeArea da engine; mesma ordem de passos do Unity abaixo.

Critérios de falha (qualquer um = não aprovado): UI principal legível ou botões obrigatórios sob oclusão do sistema (notch, indicador home, cantos arredondados); deslocamento óbvio entre visual e área de toque; Editor apenas em 16:9 sem proporção-alvo no dispositivo; comportamento de Safe Area diferente entre Dev e Release sem especificação.


Classifique primeiro: clip, offset ou apenas fundo

SintomaSuspeito primeiroAção de engenharia
Clip visual (texto/ícones no notch)Conteúdo sem inset; raiz tratada como tela cheiaVerifique safeArea vs retângulos de conteúdo
Offset de toque (parece certo, erra)Modo de escala do Canvas, múltiplos Canvases, câmera incompatívelRaycast do EventSystem + renderMode do Canvas
Fundo cortado, botões OKFundo full-bleed por design, conteúdo com insetNão é falha se a especificação permitir
Errado após rotaçãoSem listener para mudança de orientação / safeAreaRecalcule o inset ao rotacionar
Apenas um build de canalSDK altera safeArea ou resoluçãoFaça smoke desse build; não confie apenas no Android genérico

Notch clip vs correct safe inset

Visual button vs hit area offset


Unity UGUI: ordem de debug recomendada (6 passos)

1. Trave a reprodução

Registre dispositivo, SO, Dev/Release, orientação, resolução da Game view. Item 5 de pré-lançamento: rode o HUD principal em Dev e Release.

2. Logue safeArea e resolução de referência

Após o carregamento da UI principal, logue:

  • Screen.width / Screen.height
  • Screen.safeArea
  • Display.cutouts (Android 11+ se usado)

Leitura: safeArea menor que a tela → inset de conteúdo necessário. No Editor o safeArea frequentemente equivale à tela cheia → não substitui o dispositivo.

3. Canvas raiz e Canvas Scaler

VerificaçãoErro típicoDireção da correção
Render Mode da raizScreen Space / Camera UI misturados → offset de rayUm modo para a UI
Canvas ScalerResolução de referência ≠ baseline retrato do projetoCombine com o checklist de engine item 1
Match width/heightProporção longa escala errado; widgets de borda desviamAcorde o Match com design/prod; corrija o Prefab, não só a Scene
Ordem de múltiplos CanvasToques vão para a camada erradaAlinhe sortingOrder e alvos de raycast

4. Camadas: fundo full-bleed vs conteúdo seguro

Hierarquia de Prefab sugerida:

Canvas
├── Background_FullBleed   (âncora cheia, pode entrar no notch, sem input)
└── SafeRoot               (componente Safe Area ou padding guiado por safeArea)
    ├── HUD_Content
    └── Popups

Background_FullBleed and SafeRoot hierarchy

Use o Safe Area do Unity (ou código do projeto definindo offsetMin/Max a partir de Screen.safeArea). Não estique botões interativos em tela cheia sem inset.

Exportações do Studio com uma camada plana: veja nine-slice / reexportação estruturada e canvas → Prefab.

5. Verificação pontual de toque no dispositivo

3–5 botões críticos no fluxo principal; compare o centro visual com o dedo. Offset apenas em um popup → verifique Canvas aninhado ou Scaler duplicado.

6. Faça commit do Prefab no repositório

Os critérios de aprovação vivem no Prefab versionado, não em overrides de Scene de teste (item 6 de pré-lançamento). Após mudanças de âncora, rode o smoke de overflow de locale nos idiomas de estresse.


Canal / mini-game (engenharia)

CenárioObservação
App nativoScreen.safeArea + dispositivos reais
Alguns mini-games / quick appssafeArea / systemInfo do contêiner ≠ simulação do Editor
Cutouts Androidcutout vs safeArea podem diferir
PC / decksafeArea frequentemente tela cheia

Padrão: ISafeAreaProvider (ou equivalente); injete por plataforma—evite #if nos Prefabs de HUD.


Roteamento de correções

SintomaCausa provávelAçãoResponsável
Clip no dispositivo, Editor OKSem SafeRoot / sem driver de safeAreaCamadas no Prefab + Safe Area; reteste no dispositivoEngenharia
Fundo OK, botões cortadosBotões sob a camada de sangriaMova para SafeRoot; reexporte camadas do StudioEngenharia + Design
Offset de toqueMúltiplos Canvas / camera UI / Scaler aninhadoUna o Canvas ou unifique a câmera de raycastEngenharia
Desvio ao mudar resoluçãoApenas âncoras fixasCorrija âncoras; item 6 de engineEngenharia
Design sem safe frameFalta o item 7 de handoffDesign adiciona refs de notch/home; reexportaDesign
Export plano do StudioBG + HUD não separadosSplit in-place e reexporteEngenharia + Design

O que o design fornece (secundário)

EntregaUso pela engenharia
Resolução-alvo + referência segura (notch / home bar)Reference Resolution e expectativas de inset
Camadas nomeadas full-bleed vs HUDPrefab Background_* / SafeRoot
Abas de borda dentro do seguro ou sangria intencionalEstratégia de âncora

Designers não precisam escrever scripts—marcas claras reduzem px de inset adivinhados.


Perguntas frequentes

A resolução de iPhone na Game view basta?
Apenas smoke em Dev; o envio exige dispositivos-alvo (item 1 de pré-lançamento). O safeArea do Editor frequentemente difere.

Componente Safe Area vs offset manual?
Escolha do time; o manual deve atualizar em mudanças de safeArea/orientação—evite lógica duplicada.

Corrigir clip só com Canvas Scaler?
O Scaler escala; o inset é separado. Clip é retângulo de conteúdo; Scaler é escala global.

MCP/Cursor ajudam?
Bom para renomear Prefabs, anexar Safe Area, smoke de Play—os números ainda vêm dos logs do dispositivo. Checklist de engine + MCP.

Safe Area mais overflow de locale?
Corrija o layout do SafeRoot primeiro, depois locales de estresse—o inset reduz a largura.

VberAI Studio vs Google AI Studio?
Não. Veja a comparação.

Mais guias que podem interessar