728x90
반응형
1. 해상도 고정
원하는 해상도는 아래 코드에 width, height에 놓으면 된다.
void Awake()
{
Screen.sleepTimeout = SleepTimeout.NeverSleep;
int width = 1080;
int height = 1920;
float res = (float)width / height;
int deviceWidth = Screen.width;
int deviceHeight = Screen.height;
float deviceRes = (float)deviceWidth / deviceHeight;
// SetResolution 함수 제대로 사용하기
Screen.SetResolution(width, (int)(((float)deviceHeight / deviceWidth) * width), true);
if (res < deviceRes)
{
// 기기의 해상도 비가 더 큰 경우
float newWidth = res / deviceRes;
Camera.main.rect = new Rect((1f - newWidth) / 2f, 0f, newWidth, 1f);
}
else
{
// 게임의 해상도 비가 더 큰 경우
float newHeight = deviceRes / res;
Camera.main.rect = new Rect(0f, (1f - newHeight) / 2f, 1f, newHeight);
}
}
GameManager에 넣고 쓰면 된다.
쓰게 되면
위 화면은 simulator에 노트10+인데 구글링해보니 19:9 비율의 3040 x 1440이다.
이걸 강제로 9:16으로 바꿔보자.
요렇게 된다.
Canvas의 Render Mode는 Screen Space - Camera를 사용해야 한다.\
지금은 위아래 영역이 검은색이지만 잔상이 남을 수 있는데 그럴 때는
private void OnPreCull()
{
GL.Clear(true, true, Color.black);
}
해당 코드를 추가해서 해결할 수 있다.
혹은 위 아래 덮는 이미지나 다른 색상으로 덮을 수도 있다.
2. 빈 공간 처리
#region CoverImage
[Header("[Cover]")]
public RectTransform topCover;
public RectTransform bottomCover;
private void CoverInit()
{
var rect = Camera.main.rect;
topCover.anchorMin = new Vector2(0f, 1f - rect.y);
topCover.anchorMax = Vector2.one;
topCover.anchoredPosition = Vector2.zero;
bottomCover.anchorMin = Vector2.zero;
bottomCover.anchorMax = new Vector2(1f, rect.y);
bottomCover.anchoredPosition = Vector2.zero;
}
#endregion
위 아래 검은색 영역은 해당 코드로 덮을 수 있다.
728x90
반응형
'프로그래밍 > 유니티' 카테고리의 다른 글
[유니티] 화면전환 효과 (탕탕특공대 따라하기) (0) | 2022.12.07 |
---|---|
[유니티] XML테이블 사용하기 (2) (0) | 2022.11.08 |
[유니티] XML테이블 사용하기 (1) (0) | 2022.10.28 |
[유니티] FPS 표기 (0) | 2022.10.05 |
[유니티] 안드로이드 번들 빌드 오류 모음 (0) | 2022.09.26 |