[Unity] 해상도 변경 설정 만들기

ChangBeom·2024년 9월 13일
0

Unity

목록 보기
4/8


게임을 즐기는 대부분의 사람들은 전체화면으로 게임을 하지만 개인적으로 나는 창모드로 게임을 하는 것을 좋아한다. 그래서 이번엔 해상도를 변경해서 창모드로 게임을 즐길수 있도록 설정을 만들 것이다.

먼저 위 사진처럼 UI의 Panel을 이용해서 설정창을 만들고, Panel에 DropdownButton을 추가하여 원하는 해상도를 선택하고 적용버튼을 눌러서 해상도를 변경할 수 있도록 만들었다.

이제 본격적으로 스크립트를 추가하여 해상도를 변경하는 설정을 만들어보자.

일단 기본적으로 Screen.resolutions이라는 배열에 해당 기기가 지원하는 해상도가 모두 들어있다. 나는 16:9이며 60hz인 해상도를 사용할 것이기 때문에 Add함수를 이용해서 미리 만들어놨던 resolutions라는 리스트에 넣어줬다.
*resolution.width : 너비, resolution.height : 높이, resolution.refreshRate : 주사율


for (int i = 0; i < Screen.resolutions.Length; i++)
{
    if (Screen.resolutions[i].refreshRate == 60 && (Screen.resolutions[i].width * 9 == Screen.resolutions[i].height * 16) && Screen.resolutions[i].width >= 1280)
    {
        resolutions.Add(Screen.resolutions[i]);
    }
}
        

그리고 나는 너무 작은 해상도는 지원하지 않으려고, 너비가 1280이상인 해상도부터 리스트에 넣어줬다.

이제 밑작업은 끝났으니 본격적으로 Dropdown에 값을 넣어보자.

먼저 resolutionDropdown.options.Clear()을 통해서 현재 Dropdown의 option에 들어있는 쓰레기값을 초기화해준다.

그리고 resolutions(너비 1280이상 16:9 해상도를 넣어둔 리스트)를 돌며 Dropdown의 option를 하나씩 만들어준다.

다음으로 옵션을 전부 추가해줬으면 새로고침을 한번해서 변경사항을 바로 적용시켜준다.


resolutionDropdown.options.Clear();

int optionNum = 0;

foreach (Resolution item in resolutions)
{
    Dropdown.OptionData option = new Dropdown.OptionData();

    option.text = item.width + " x " + item.height + " " + item.refreshRate + "hz";
    resolutionDropdown.options.Add(option);

    if (item.width == Screen.width && item.height == Screen.height)
    {
        resolutionDropdown.value = optionNum;
    }
           optionNum++;
}

resolutionDropdown.RefreshShownValue();
       

이렇게 Dropdown의 option을 전부 만들어줬으면, Dropdown에서 옵션을 변경하는 것을 판단하는 OnValueChange함수를 만들어서 적용시켜준다.


public void DropboxOptionChange(int x)
{
   resolutionNum = x;
}

그리고 Screen.SetResolution(너비,높이,전체화면 여부)를 이용해서 옵션을 클릭하고 적용버튼을 누르면 해상도가 변경되는 OnClick함수를 만들어준다.

public void OkBtnClick()
{
        Screen.SetResolution(resolutions[resolutionNum].width, resolutions[resolutionNum].height, false);
}

마지막으로 Canvas에서 Scale With Screen Size를 설정해주면 너비, 높이 비율에 맞춰서 해상도가 변경된다!

[완성]

0개의 댓글