2015-03-02 6 views
8

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!Versteckter Unterschied zwischen Unity 3D-Qualitätseinstellungen?

Ich habe 4 Qualitätseinstellungen Setup im Spiel über:

Edit -> Project Settings -> Quality 

Die vier Einstellungen sind: Einfach, gut, schön, fantastische

Die kurze Version ist, dass unabhängig von den Optionen, die ich innen gesetzt In der Qualitätseinstellung wird Simple immer besser als Good.

Zum Beispiel, wenn ich Simple und Good auf identische Einstellungen für alle Rendering-Optionen gesetzt habe, setze alles auf Minimum (Schatten aus, keine Antialias, 1/8 Texturen, etc) und teste das Spiel auf einem iPad ab verschiedene Standard-Qualitätsoptionen:

Simple - ~26FPS 
Good - ~6FPS 

Wenn ich einfach ändern 1/4 Texturen zu verwenden, und bei 08.01 Texturen Gut zu verlassen, führt er immer noch fast das gleiche:

Simple - ~24FPS 
Good - ~6FPS 

ich klar sehen Die Texturen sind im Simple-Modus bei 1/4 besser/detaillierter, aber es läuft noch fast 20FPS schneller als der gute Modus, der 1/8 Texturen verwendet.

Ich sehe vom Anbringen des Unity iOS Profilers, dass die CPU, wenn sie im guten Modus läuft, unter einer konstanten Last von "Overhead" leidet, die im Simple Mode nicht vorhanden ist (mit identischen Qualitätseinstellungen). 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.

Aus dem Lesen der unity manual page 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 im Code (Verwenden von C# über die QualitySettings.SetQualityLevel) und ich bekomme die gleiche Leistung.

Ich fühle mich wie ich etwas Schlüssel vermisse, aber ich kann nicht scheinen, diese herauszufinden.

+1

Dies ist eine große Frage! Bei UnityAnswers könnten Sie jedoch mehr Glück haben. Diese Seite ist der Einheit gewidmet, so dass Sie dort vielleicht mehr sachkundige Leute finden können. – SirBraneDamuj

+0

Vielen Dank für den Vorschlag - ich hatte dies tatsächlich auf Unity Antworten gepostet, aber keine Antworten erhalten! Hatte gehofft, dass jemand hier bei StackOverflow mir helfen könnte, es zu knacken! – Jokode

Antwort

2

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 verbessern möchten Sie FPS gibt es einige Tipps

  1. Make Textur atlasing Unentschieden ruft
  2. zu reduzieren verbessern Berechnungen in Update-Funktionen und Cache-Update-Funktion verwendet transformiert.
  3. Nicht suchen Komponenten in jedem Frame, in einigen Fällen können Sie Singletonmuster
  4. Verwenden Sie in jedem Frame nicht Objekte zerstören. Machen Sie ein Pooling von Objekten.
  5. Partikelemissionen verbessern und so weniger machen, wie Sie können
  6. Shadern verbessern. Wenn Sie mobile mobile Shader verwenden. Zum Beispiel ändern Sie Diffus Shader zu Mobile/Diffuse.

Hier einige nützliche Links Object pooling video tutorial, Singleton pattern Unity3d c#

+0

Vielen Dank für Ihre Vorschläge - ich werde sicherstellen, dass ich alle durchgehen werde, während ich das Spiel optimiere. Ich fürchte jedoch, dass dies meine ursprüngliche Frage nicht beantwortet, ob es Unterschiede zwischen den Qualitätseinstellungen unter der Haube gibt. In meinem Fall sind alle Einstellungen/Features für alle Qualitätseinstellungen identisch - aber wenn ich von der niedrigsten (SCHNELLSTEN) auf eine andere Qualitätsstufe umschalte, sehe ich einen enormen Leistungsabfall. Es würde Sinn machen, wenn irgendwelche anderen Funktionen aktiviert würden, wenn ich das Level ändere - aber alle Einstellungen sind gleich! – Jokode