[Unity] 모바일에서 게임 화면 비율 고정 시키기

특히 2D게임 제작시에 모바일 기기에서 해상도에 관계없이 original screen aspect ratio를 유지해줘야 사용자에게 왜곡없는 화면을 보여줄 수 있는데요, 유니티에서 아래와 같이 Resolution을 강제로 지정하면 모바일 화면에서 Stretch된 화면이 디스플레이되어서 원래 화면 비율이 유지되지 않습니다.

Screen.SetResolution(1080, 1920, true);

SetResolution으로 해상도 고정시 Mobile device별로 보여지는 화면 예시

 

그래서 Resolution을 바꾸는 대신 아래와 같이 Camera Component의 ViewPort를 변경하는 방법으로 해결해야 합니다.

    void Start()
    {
        var camera = GetComponent<Camera>();
        var r = camera.rect;
        var scaleheight = ((float)Screen.width / Screen.height) / (9f / 16f);
        var scalewidth = 1f / scaleheight;

        if (scaleheight < 1f)
        {
            r.height = scaleheight;
            r.y = (1f - scaleheight) / 2f;
        }
        else
        {
            r.width = scalewidth;
            r.x = (1f - scalewidth) / 2f;
        }

        camera.rect = r;
    }

    void OnPreCull() => GL.Clear(true, true, Color.black);

Camera ViewPort 변경 후

 

'Development > Unity' 카테고리의 다른 글

[Unity] 레이저 광선 효과 쉽게 만들기  (0) 2023.01.03