ShadowBladeX

Resolution Changer

Apr 21st, 2024 (edited)
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.82 KB | Source Code | 0 0
  1. using UnityEngine;
  2. using TMPro;
  3. using System.Collections.Generic;
  4.  
  5. public class ResolutionManager : MonoBehaviour
  6. {
  7.     public TMP_Dropdown resolutionDropdown;
  8.  
  9.     private bool resolutionsAdded = false;
  10.  
  11.     void Start()
  12.     {
  13.         resolutionDropdown.onValueChanged.AddListener(delegate
  14.         {
  15.             SetResolution(resolutionDropdown);
  16.         });
  17.  
  18.         PopulateDropdown();
  19.     }
  20.  
  21.     private void PopulateDropdown()
  22.     {
  23.         if (!resolutionsAdded)
  24.         {
  25.             resolutionDropdown.ClearOptions();
  26.  
  27.             List<string> uniqueResolutions = GetUniqueResolutions();
  28.  
  29.             foreach (string resolution in uniqueResolutions)
  30.             {
  31.                 TMP_Dropdown.OptionData optionData = new TMP_Dropdown.OptionData(resolution);
  32.                 resolutionDropdown.options.Add(optionData);
  33.             }
  34.  
  35.             resolutionDropdown.RefreshShownValue();
  36.  
  37.             resolutionsAdded = true;
  38.         }
  39.     }
  40.  
  41.     private List<string> GetUniqueResolutions()
  42.     {
  43.         HashSet<string> uniqueResolutionsSet = new HashSet<string>();
  44.  
  45.         foreach (Resolution resolution in Screen.resolutions)
  46.         {
  47.             string resolutionString = $"{resolution.width} x {resolution.height}";
  48.             uniqueResolutionsSet.Add(resolutionString);
  49.         }
  50.  
  51.         return new List<string>(uniqueResolutionsSet);
  52.     }
  53.  
  54.     private void SetResolution(TMP_Dropdown dropdown)
  55.     {
  56.         string selectedResolutionString = dropdown.options[dropdown.value].text;
  57.         string[] dimensions = selectedResolutionString.Split('x');
  58.  
  59.         if (dimensions.Length == 2 && int.TryParse(dimensions[0], out int width) && int.TryParse(dimensions[1], out int height))
  60.         {
  61.             Screen.SetResolution(width, height, Screen.fullScreen);
  62.         }
  63.     }
  64. }
Tags: Unity tutorial
Advertisement
Add Comment
Please, Sign In to add comment