using System.Collections.Generic; using UnityEngine; namespace Amanotes { internal class RuntimeOverlay { private readonly List fpsValues = new List { 0, 1, 5, 10, 15, 20, 30, 45, 50, 60, 75, 90, 120, 240, 360, 480, 720, 960, 1000, 1200 }; private readonly List timeScaleValues = new List { 0f, 0.1f, 0.2f, 0.5f, 1f, 2f, 5f, 10f }; internal void OnGUI() { float fps = Application.targetFrameRate; if (DrawSlider("Target FPS", ref fps, fpsValues)) Application.targetFrameRate = (int)fps; float ts = Time.timeScale; if (DrawSlider("Time Scale", ref ts, timeScaleValues)) Time.timeScale = ts; } private static bool DrawSlider(string label, ref float v, List values) { int idx1 = values.IndexOf(v); if (idx1 == -1) { values.Add(v); values.Sort(); idx1 = values.IndexOf(v); } GUILayout.BeginHorizontal(); GUILayout.Label(label, GUILayout.Width(100f)); int idx2 = Mathf.RoundToInt(GUILayout.HorizontalSlider(idx1, 0, values.Count - 1)); GUILayout.Label($"{v}", GUILayout.Width(50f)); GUILayout.EndHorizontal(); if (idx2 == idx1) return false; v = values[idx2]; return true; } } }