유니티에서 해상도를 변경하는 것은 게임이 다양한 화면 크기와 해상도를 가진 디스플레이에서 잘 동작하도록 하는 데 중요하다.
Resolution 클래스는 이를 가능하게 해준다.
Resolution 클래스는 게임을 실행하는 디스플레이의 해상도를 나타내는 클래스로,
게임의 렌더링 해상도를 조절하고, 현재 디스플레이의 해상도 정보를 가져오는 데 사용된다.
Resolution은 다음과 같은 프로퍼티와 메서드를 가지고 있다.
위 사진과 같이 세팅을 먼저 해주자.
해상도 텍스트, Dropdown이라는 UI 요소가 있는데 나는 TMP_Dropdown으로 생성했다.
전체화면을 나타내는 토글과 해상도 값을 적용하는 확인 버튼을 생성했다.
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class VideoOption : MonoBehaviour
{
FullScreenMode screenMode; // 현재 화면 모드를 저장하는 변수다. 전체 화면 모드인지, 창 모드인지 여부를 저장한다.
public TMP_Dropdown resolutionDropdown; // 해상도를 변경할 수 있는 드롭다운 메뉴를 가리킨다.
List<Resolution> resolutions = new List<Resolution>(); // 사용 가능한 모든 해상도를 저장하는 리스트다.
public int resolutionNum; // 현재 선택된 해상도의 인덱스를 저장하는 변수다.
int optionNum = 0; // 현재 해상도 옵션의 인덱스를 저장하는 변수다.
public Toggle fullScreenBtn; // 전체 화면 모드를 토글하는 버튼을 가리킨다.
private void Start()
{
InitUI();
}
private void InitUI() // 사용 가능한 모든 해상도를 가져와서 드롭다운 메뉴에 추가하고, 현재 화면 모드에 따라 토글 버튼의 상태를 설정한다.
{
resolutions.AddRange(Screen.resolutions);
resolutions.Reverse();
resolutionDropdown.options.Clear();
foreach(Resolution item in resolutions)
{
TMP_Dropdown.OptionData option = new TMP_Dropdown.OptionData();
option.text = item.width + "x" + item.height + " " + item.refreshRateRatio + "hz";
resolutionDropdown.options.Add(option);
if (item.width == Screen.width && item.height == Screen.height)
resolutionDropdown.value = optionNum;
optionNum++;
}
resolutionDropdown.RefreshShownValue();
fullScreenBtn.isOn = Screen.fullScreenMode.Equals(FullScreenMode.FullScreenWindow) ? true : false;
}
public void DropboxOptionChange(int x) // 드롭다운 메뉴에서 선택한 해상도의 인덱스를 resolutionNum에 저장하는 함수다.
{
resolutionNum = x;
}
public void FullScreenBtn(bool isFull) // 토글 버튼의 상태에 따라 화면 모드를 전체 화면 모드 또는 창 모드로 설정하는 함수다.
{
screenMode = isFull ? FullScreenMode.FullScreenWindow : FullScreenMode.Windowed;
}
public void ApplyBtn() // "적용" 버튼을 클릭하면 현재 선택된 해상도와 화면 모드로 화면 설정을 변경하는 함수다.
{
Screen.SetResolution(resolutions[resolutionNum].width, resolutions[resolutionNum].height, screenMode);
}
}
이 모니터는 QHD 170hz로 설정되어있는 모니터다.
이 모니터는 FHD 144Hz로 설정되어있는 모니터다.
아쉬운점은 빌드 상태에서만 해상도 변경을 확인할 수 있다.
StartScene UI 배치 완성하기.