반응형
유니티 C# 노치 대응하기 SafeArea 에셋 추천 UI
1. 프로젝트 설정
먼저 Unity에서 노치 대응을 위한 기본 설정을 합니다.
1.1. iOS 설정
- Project Settings > Player > iOS 탭으로 이동합니다.
- Resolution and Presentation 섹션에서 Render Outside Safe Area를 체크 해제합니다. 이렇게 하면 iOS의 Safe Area 내부에서만 렌더링이 이루어지게 됩니다.
- Status Bar 스타일을 원하는 대로 설정할 수 있습니다.
1.2. Android 설정
- Project Settings > Player > Android 탭으로 이동합니다.
- Resolution and Presentation 섹션에서 Render Outside Safe Area를 체크 해제합니다.
2. Safe Area 스크립트 작성
다음으로, 노치와 같은 화면의 안전 영역을 고려해 UI를 조정하는 스크립트를 작성합니다.
using UnityEngine;
using UnityEngine.UI;
public class SafeArea : MonoBehaviour
{
private RectTransform _panel;
private Rect _lastSafeArea = new Rect(0, 0, 0, 0);
private Vector2 _minAnchor = Vector2.zero;
private Vector2 _maxAnchor = Vector2.one;
void Awake()
{
_panel = GetComponent<RectTransform>();
if (_panel == null)
{
Debug.LogError("SafeArea: No RectTransform found on the GameObject.");
return;
}
ApplySafeArea();
}
void ApplySafeArea()
{
Rect safeArea = Screen.safeArea;
if (safeArea != _lastSafeArea)
{
_lastSafeArea = safeArea;
_minAnchor = safeArea.position;
_maxAnchor = safeArea.position + safeArea.size;
_minAnchor.x /= Screen.width;
_minAnchor.y /= Screen.height;
_maxAnchor.x /= Screen.width;
_maxAnchor.y /= Screen.height;
_panel.anchorMin = _minAnchor;
_panel.anchorMax = _maxAnchor;
}
}
void Update()
{
ApplySafeArea();
}
}
간단하게 구현하기
반응형