728x90
레터박스란?
좌우로 길거나, 위아래로 긴 화면을 비율을 맞추기 위해 검정 화면으로 가리는 행위.
Rect를 가져오고, 비율을 맞춰줍니다.
Rect rect = _camera.rect;
float scaleHeight = ((float)Screen.width / Screen.height) / (_yRatio / _xRatio);
float scaleWidth = 1 / scaleHeight;
맞춘 비율을 Rect 변수에 적용해줍니다.
if (scaleHeight < 1f)
{
rect.height = scaleHeight;
rect.y = (1f - scaleHeight) / 2;
}
else
{
rect.width = scaleWidth;
rect.x = (1f - scaleWidth) / 2;
}
이후 카메라에 적용해줍니다.
_camera.rect = rect;
카메라가 프레임을 렌더링하기 전에 호출됩니다.
private void OnPreCull()
{
GL.Clear(true, true, Color.black);
}
아래와 같이 UI 잔상이 남는 것을 볼 수 있다.
Canvas 설정을 Screen Space - Camera로 변경하면 해당 문제가 고쳐지는 것을 볼 수 있다.
아래처럼 해결 된다 !
728x90
댓글