Ich arbeite daran, mein Spiel für iOS zu optimieren, und ich stoße auf ein wirklich merkwürdiges Problem mit den Qualitätseinstellungen in Unity3D, das mich völlig festhängt!
Ich habe 4 Qualitätseinstellungen im Spiel eingerichtet über:
%Vor%Die vier Einstellungen sind: Einfach, Gut, Schön, Fantastisch
Die kurze Version ist, dass unabhängig von den Optionen, die ich im Qualitätseinstellungen-Panel einstelle, Simple immer besser ist als Good.
Wenn ich zum Beispiel Simple und Good auf identische Einstellungen für alle Rendering-Optionen setze, setze alles auf ein Minimum (Schatten aus, keine Antialiasing, 1/8 Texturen, etc) und teste das Spiel auf einem iPad, beginnend mit anderen Standardqualitätsoptionen:
%Vor%Wenn ich "Einfach" für die Verwendung von 1/4 Texturen ändere und "Gut" bei 1/8 Texturen belasse, funktioniert es immer noch fast wie das Folgende:
%Vor%Ich kann deutlich sehen, dass die Texturen im Simple-Modus bei 1/4 besser / detaillierter sind, aber dennoch läuft sie fast 20FPS schneller als der Good-Modus, der 1/8 Texturen verwendet.
Beim Anhängen des Unity iOS-Profilers sieht man, dass die CPU im Good-Modus unter einer konstanten Last von "Overhead" leidet, die im Simple Mode (mit identischen Qualitätseinstellungen) nicht vorhanden ist. Es ändert sich also etwas, wenn ich von "Einfach" zu "Gut" übergehe, aber es scheint nichts zu sein, was ich im Menü der Qualitätseinstellungen ändern kann.
Beim Lesen der Handbuchseite habe ich den Eindruck, dass die verschiedenen Qualitätseinstellungen einfach nur Platzhalter sind wie Sie Optionen hinzufügen / entfernen können. Aber von meinen Experimenten scheint es, dass sich etwas anderes ändert, wenn ich mit Simple Vs Good (oder anderen) Optionen beginne.
Ich habe versucht, das Spiel in Simple / Good als Standard zu starten, und auch manuell Code umzuschalten (Verwendung von C # über die QualitySettings.SetQualityLevel ) und ich bekomme die gleiche Leistung.
Ich fühle mich, als ob ich etwas Schlüssel vermisse, aber ich kann nicht scheinen, das herauszufinden.
Qualitätsstufen können Unterschiede verursachen, wenn Sie Funktionen verwenden, die in Qualitätsstufen existieren und zusätzliche Berechnungen erfordern. Aber wenn Sie diese Funktionen nicht verwenden, gibt es keinen Unterschied zwischen den Qualitätsstufen. Wenn Sie Ihre FPS verbessern möchten, gibt es einige Tipps
Hier sind einige nützliche Links Objektpooling-Videoanleitung , Singleton-Muster Unity3d c #