Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using TMPro;
- using System.Collections.Generic;
- public class ResolutionManager : MonoBehaviour
- {
- public TMP_Dropdown resolutionDropdown;
- private bool resolutionsAdded = false;
- void Start()
- {
- resolutionDropdown.onValueChanged.AddListener(delegate
- {
- SetResolution(resolutionDropdown);
- });
- PopulateDropdown();
- }
- private void PopulateDropdown()
- {
- if (!resolutionsAdded)
- {
- resolutionDropdown.ClearOptions();
- List<string> uniqueResolutions = GetUniqueResolutions();
- foreach (string resolution in uniqueResolutions)
- {
- TMP_Dropdown.OptionData optionData = new TMP_Dropdown.OptionData(resolution);
- resolutionDropdown.options.Add(optionData);
- }
- resolutionDropdown.RefreshShownValue();
- resolutionsAdded = true;
- }
- }
- private List<string> GetUniqueResolutions()
- {
- HashSet<string> uniqueResolutionsSet = new HashSet<string>();
- foreach (Resolution resolution in Screen.resolutions)
- {
- string resolutionString = $"{resolution.width} x {resolution.height}";
- uniqueResolutionsSet.Add(resolutionString);
- }
- return new List<string>(uniqueResolutionsSet);
- }
- private void SetResolution(TMP_Dropdown dropdown)
- {
- string selectedResolutionString = dropdown.options[dropdown.value].text;
- string[] dimensions = selectedResolutionString.Split('x');
- if (dimensions.Length == 2 && int.TryParse(dimensions[0], out int width) && int.TryParse(dimensions[1], out int height))
- {
- Screen.SetResolution(width, height, Screen.fullScreen);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment