using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Diagnostics; public class ResolutionUtility { public static readonly Vector2 originalResolution = new Vector2(Screen.width, Screen.height); public static Vector2 currentResolution = new Vector2(Screen.width, Screen.height); [Conditional("UNITY_ANDROID")] public static void AdjustResolution() { Screen.SetResolution(Mathf.RoundToInt(currentResolution.x), Mathf.RoundToInt(currentResolution.y), true); } public static void AdjustResolution(GameQuality _quality) { switch (_quality) { case GameQuality.Low: currentResolution = ConvertResolution(new Vector2(1280, 720)); break; case GameQuality.Medium: currentResolution = ConvertResolution(new Vector2(1920, 1080)); break; case GameQuality.High: currentResolution = ConvertResolution(new Vector2(1920, 1080)); break; } Screen.SetResolution(Mathf.RoundToInt(currentResolution.x), Mathf.RoundToInt(currentResolution.y), true); } static Vector2 ConvertResolution(Vector2 _inputResolution) { var resolution = Screen.currentResolution; var ratio = (resolution.width / (float)resolution.height) / ((float)16 / 9); var height = 0f; var width = 0f; if (ratio > 1) { height = _inputResolution[1]; width = Mathf.RoundToInt(resolution.width / (float)resolution.height * height); } else { width = _inputResolution[0]; height = Mathf.RoundToInt((float)resolution.height / resolution.width * width); } if (height * width - originalResolution.x * originalResolution.y > 10) { return originalResolution; } else { return new Vector2(width, height); } } }