유니티
[Unity] 유니티 해상도 설정 UI / 주사율 변경
Krapboss
2023. 11. 25. 17:42
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();//새로고침
}