코드 및 공부/입력 관리

화면 해상도 및 전체화면 여부 조절하기, Screen.SetResolution()

ekrxjvpvj0110 2025. 2. 4. 21:39

유니티 버전 - 6000.0.34f1

 

 

 

 

 

목차


  • 화면 해상도 및 전체 화면 여부 조절하기

 

 

 

 

 

화면 해상도 조절하기


인게임 옵션을 설정할때 그래픽 세팅뿐만 아니라 화면 해상도 또한 바꿀 수 있어야 할 것입니다, 16:9 비율의 해상도만을 필터링하여 게임의 해상도를 바꾸어주는 코드입니다

 

 

 

드롭다운과 토글을 만들어 주고, 드롭다운의 모든 옵션을 지워줍니다

 

 

 

코드를 작성하여줍니다, 아래는 전체 코드입니다

더보기
using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;
using TMPro;


public class TitleOption : PopupUI
{
    public TMP_Dropdown resolutionsDropdown;
    public Toggle fullscreenToggle;
    
    private readonly List<Resolution> _resolutions = new List<Resolution>();
    private bool _isFullscreen;
    

    private void Start()
    {
        InitResolutions();
    }


    private void InitResolutions()
    {
        Resolution[] allResolutions = Screen.resolutions;
        List<string> options = new List<string>();

        foreach (Resolution item in allResolutions)
        {
            if (Mathf.Approximately((float)item.width / item.height, 16f / 9f))
            {
                _resolutions.Add(item);
                
                options.Add(item.width + " x " + item.height);
            }
        }

        resolutionsDropdown.AddOptions(options);
    }


    public void OnChangeResolution(int index)
    {
        Resolution selectedResolution = _resolutions[index];
        Screen.SetResolution(selectedResolution.width, selectedResolution.height, _isFullscreen);
    }

    
    public void OnSetFullscreen(bool fullscreen)
    {
        _isFullscreen = fullscreen;
        
        Screen.fullScreen = _isFullscreen;
    }
}

 

 

 

    public TMP_Dropdown resolutionsDropdown; // 사용자로부터 입력을 받기 위함
    public Toggle fullscreenToggle; // 사용자로부터 입력을 받기 위함
    
    private readonly List<Resolution> _resolutions = new List<Resolution>(); // 실제 16:9 비율로 필터링된 해상도가 저장
    private bool _isFullscreen; // 전체화면 여부를 저장

 

 

 

 

_resolutions를 확인해보면 아래와 같습니다, 현재 모니터의 최대 해상도를 넘는 해상도는 가져오지못합니다(FHD모니터의 경우 QHD, UHD옵션이 추가되지않음)

 

 

 

해상도를 필터링하고 리스트와 드롭다운 목록에 추가 시켜주는 역할입니다

private void InitResolutions()
    {
        Resolution[] allResolutions = Screen.resolutions;
        List<string> options = new List<string>();

        foreach (Resolution item in allResolutions)
        {
            if (Mathf.Approximately((float)item.width / item.height, 16f / 9f))
            {
                _resolutions.Add(item);
                
                options.Add(item.width + " x " + item.height);
            }
        }

        resolutionsDropdown.AddOptions(options);
    }

 

 

 

드롭다운을 이용하여 해상도를 변경시켜주는 역할입니다

    public void OnChangeResolution(int index)
    {
        Resolution selectedResolution = _resolutions[index];
        Screen.SetResolution(selectedResolution.width, selectedResolution.height, _isFullscreen);
    }

 

 

 

드롭다운의 On Value Changed에서 설정해줍니다

 

 

 

전체화면 여부를 설정하여줍니다

    public void OnSetFullscreen(bool fullscreen)
    {
        _isFullscreen = fullscreen;
        
        Screen.fullScreen = _isFullscreen;
    }

 

 

 

토글의 On Value Changed에서 설정해줍니다

 

 

 

실행결과입니다, 디버그로 대체하겠습니다