#FPS drop at the scene load
1 messages · Page 1 of 1 (latest)
This dirty patch works for me somehow.. I don't how, I don't know why, but..
private IEnumerator ReSetQualityLevelAfterSeconds(float delay)
{
QualitySettings.vSyncCount = 4;
Application.targetFrameRate = 70;
yield return new WaitForSeconds(.2f);
QualitySettings.SetQualityLevel(0, applyExpensiveChanges: true); // Default quality settings
yield return new WaitForSecondsRealtime(delay);
// this::GetRenderLevel returns an enum being Default, Quality or Performance
// level is a ScriptableObject, Level::GetRenderLevel returns the string of the quality-level associated with the level ('scene') and the current platform
// SetQualityLevel is defined below
string levelMode = level.GetRenderLevel(this.GetRenderLevel());
if (levelMode != null)
SetQualityLevel(levelMode);
yield return new WaitForSeconds(.2f);
QualitySettings.vSyncCount = 0;
Application.targetFrameRate = 60;
}```
with :
```csharp
private void SetQualityLevel(string levelMode)
{
string[] names = QualitySettings.names;
int curIndex = QualitySettings.GetQualityLevel();
// Commented = Forced
// if (string.Equals(names[curIndex], levelMode, System.StringComparison.CurrentCultureIgnoreCase))
// return;
for (int i = 0; i < names.Length; i++)
{
if (string.Equals(names[i], levelMode, System.StringComparison.CurrentCultureIgnoreCase))
{
QualitySettings.SetQualityLevel(i, applyExpensiveChanges: true);
lastQualityLevelSettingTime = Time.unscaledTime;
break;
}
}
}
I call the routine with a little framerate analyser
I'm still interested if you have any idea, but for now this (whatever it does under the hood) fixes my issue