새소식

유니티

[Unity] 유니티 해상도 설정 UI / 주사율 변경

  • -
Screen.resolutions

* 해당 값을 지원하는 해상도를 저장하고 있다.

 

 * 출력값 확인

 

 

 

주사율은?

주사율 = {resol.refreshRateRatio.numerator} / {resol.refreshRateRatio.denominator}

numerator = 재생률의 분수 => [60]hz * 1000[60000mhz]

denominator = 재생률의 분모 => 1초 * 1000[1000ms]

주사율 =>  {Mathf.CeilToInt(resol.refreshRateRatio.numerator * 0.001f)}

 

 

 

최종 드롭다운 해상도 변경 UI

 

void SetResolution()
    {
        //해상도 값들을 저장
        resolutions.Clear();
        foreach (Resolution resol in Screen.resolutions)
        {
            //주사율이 60hz일 경우에만 지정
            if ( Mathf.CeilToInt(resol.refreshRateRatio.numerator * 0.001f) == 60)
            {
                resolutions.Add(resol); 
            }
        }

        option_dropdown.options.Clear();//기존 옵션 내용 제거
        //드롭다운 박스에 해상도 값을 표시
        int _num = -1;
        foreach (Resolution resolution in resolutions)
        {
            _num++;

            //옵션값을 지정한다.
            TMP_Dropdown.OptionData _option = new TMP_Dropdown.OptionData();
            _option.text = string.Format($"{resolution.width} x {resolution.height} [{Mathf.CeilToInt(resolution.refreshRateRatio.numerator * 0.001f)}]+hz");
            option_dropdown.options.Add(_option);

            //현재 옵션값을 판단하여 현재의 해상도를 표시한다.
            if(Screen.currentResolution.width == resolution.width && Screen.currentResolution.height == resolution.height)
            {
                //아래 값들은 상황판단 변수임
                option_dropdown.value = _num;
                _currentResolutionNum = _num; _dropboxResolutionNum = _num;
            }
        }
        option_dropdown.RefreshShownValue();//새로고침
    }

 

Contents

아핫

땡큐하다