Projext/Assets/Scripts/Systems/Settings/SettingResolutionUI.cs
2026-02-13 00:23:25 +09:00

50 lines
2.7 KiB
C#

using UnityEngine; // 유니티 엔진의 기본 기능을 불러올거에요 -> UnityEngine을
using TMPro; // 텍스트메쉬프로 기능을 사용할거에요 -> TMPro를
using System.Collections.Generic; // 리스트 기능을 사용할거에요 -> System.Collections.Generic을
public class SettingResolutionUI : MonoBehaviour // 클래스를 선언할거에요 -> MonoBehaviour를 상속받는 SettingResolutionUI를
{
[SerializeField] private TMP_Dropdown resolutionDropdown; // 변수를 선언할거에요 -> 해상도 선택 드롭다운 UI를 resolutionDropdown에
private Resolution[] resolutions; // 배열을 선언할거에요 -> 사용 가능한 해상도 목록을 resolutions에
private void Start() // 함수를 실행할거에요 -> 스크립트 시작 시 Start를
{
InitDropdown(); // 함수를 실행할거에요 -> 드롭다운을 초기화하는 InitDropdown을
}
private void InitDropdown() // 함수를 선언할거에요 -> 해상도 목록을 채우는 InitDropdown을
{
if (SettingsManager.Instance == null || resolutionDropdown == null) return; // 조건이 맞으면 중단할거에요 -> 매니저나 드롭다운이 없다면
resolutions = SettingsManager.Instance.FilteredResolutions; // 값을 가져올거에요 -> 매니저에서 필터링된 해상도 목록을
resolutionDropdown.ClearOptions(); // 비울거에요 -> 드롭다운의 기존 옵션들을
List<string> options = new List<string>(); // 리스트를 생성할거에요 -> 옵션 문자열들을 담을 리스트를
int currentResolutionIndex = 0; // 변수를 초기화할거에요 -> 현재 해상도 인덱스를 0으로
for (int i = 0; i < resolutions.Length; i++) // 반복할거에요 -> 모든 해상도에 대해
{
string option = resolutions[i].width + " x " + resolutions[i].height; // 문자열을 만들거에요 -> "가로 x 세로" 형식으로
options.Add(option); // 추가할거에요 -> 만든 문자열을 옵션 리스트에
// 현재 해상도와 일치하는지 확인
if (i == SettingsManager.Instance.resolutionIndex) // 조건이 맞으면 실행할거에요 -> 현재 설정된 인덱스와 같다면
{
currentResolutionIndex = i; // 값을 저장할거에요 -> 현재 인덱스로
}
}
resolutionDropdown.AddOptions(options); // 추가할거에요 -> 완성된 옵션 리스트를 드롭다운에
resolutionDropdown.value = currentResolutionIndex; // 값을 설정할거에요 -> 현재 선택된 해상도로
resolutionDropdown.RefreshShownValue(); // 갱신할거에요 -> 드롭다운 표시 내용을
resolutionDropdown.onValueChanged.AddListener(OnResolutionChanged); // 구독할거에요 -> 값 변경 이벤트를
}
public void OnResolutionChanged(int index) // 함수를 선언할거에요 -> 해상도 변경 시 호출될 OnResolutionChanged를
{
if (SettingsManager.Instance != null) // 조건이 맞으면 실행할거에요 -> 매니저가 있다면
SettingsManager.Instance.SetResolution(index); // 실행할거에요 -> 해상도 설정을 적용하는 함수를
}
}