using System; using System.Collections.Generic; using SUISS.Core; using UnityEngine; public sealed class FPSLimiter : SingletonMonobehaviour { protected override void Awake() { base.Awake(); if (this._isValidNewInstance) { UnityEngine.Object.DontDestroyOnLoad(this); Application.targetFrameRate = 30; } } public void PushUnlimitedFPSRequest(object requester) { if (this._unlimitedFPSRequesters.Count == 0) { Application.targetFrameRate = 60; } if (!this._unlimitedFPSRequesters.Contains(requester)) { this._unlimitedFPSRequesters.Add(requester); } } public void PopUnlimitedFPSRequest(object requester) { this._unlimitedFPSRequesters.Remove(requester); if (this._unlimitedFPSRequesters.Count == 0) { Application.targetFrameRate = 30; } } private const int UnlimitedFPS = 60; private const int LimitedFPS = 30; private List _unlimitedFPSRequesters = new List(); }