2015-03-02 13 views
8

Sto lavorando per ottimizzare il mio gioco per iOS, e sto incontrando un problema davvero strano con le impostazioni di qualità in Unity3D che mi ha bloccato completamente!Differenza nascosta tra le impostazioni di qualità 3D Unity?

Ho installato 4 impostazioni di qualità nel gioco tramite:

Edit -> Project Settings -> Quality 

Le quattro impostazioni sono: semplice, buono, bello, fantastico

La versione breve è che a prescindere dalle opzioni ho impostato all'interno il pannello delle impostazioni di qualità, Simple funzionerà sempre meglio di Buono. Ad esempio, se imposto Simple and Good di avere impostazioni identiche per tutte le opzioni di rendering, impostando tutto al minimo (ombre disattivate, nessun antialias, 1/8 Textures, ecc.) E testare il gioco su un iPad a partire da diverse opzioni di qualità di default:

Simple - ~26FPS 
Good - ~6FPS 

Se cambio semplice da usare 1/4 texture, e lasciare Bravo a 1/8 texture, si esibisce ancora quasi lo stesso:

Simple - ~24FPS 
Good - ~6FPS 

posso vedere chiaramente le trame sono migliori/più dettagliate in modalità Semplice a 1/4, ma è ancora in esecuzione quasi 20 FPS più veloce della modalità Buono che utilizza trame di dimensioni 1/8.

Vedo dal collegamento del profiler Unity iOS che quando si esegue in modalità Good la CPU soffre di un carico costante di "Overhead", che non è presente in modalità semplice (con impostazioni di qualità identiche). Quindi qualcosa sta chiaramente cambiando quando vado dal semplice al buono, ma non sembra essere nulla che possa cambiare dal menu delle impostazioni di qualità.

Dalla lettura del unity manual page ho l'impressione che le diverse impostazioni di qualità siano semplicemente segnaposto poiché è possibile aggiungere/rimuovere opzioni. Ma dai miei esperimenti sembra che ci sia qualcos'altro che cambia quando avvio in Simple Vs Good (o altre) opzioni.

Ho provato ad avviare il gioco in Semplice/Buono come predefinito, e anche a passare manualmente il codice (utilizzando C# tramite il QualitySettings.SetQualityLevel) e ottengo le stesse prestazioni.

Mi sento come se mi mancasse qualcosa chiave ma non riesco a capire questo fuori.

+1

Questa è una grande domanda! Potresti avere più fortuna su UnityAnswers. Quel sito è dedicato a Unity, quindi potresti trovare persone più competenti. – SirBraneDamuj

+0

Grazie per il suggerimento - in realtà avevo pubblicato questo post su Unity Answers, ma non ho ricevuto alcuna risposta! Speravo che qualcuno qui a StackOverflow potesse aiutarmi a risolverlo! – Jokode

risposta

2

I livelli di qualità possono fare differenze quando si utilizzano funzionalità che esistono nei livelli di qualità e sono necessari calcoli aggiuntivi. Ma quando non usi queste caratteristiche non c'è differenza tra i livelli di qualità. Se si vuole migliorare il tuo FPS c'è alcuni consigli

  1. Fai tessitura atlasing per ridurre pareggio chiama
  2. migliorare i calcoli di funzioni di aggiornamento e la cache trasforma utilizzato dalla funzione di aggiornamento.
  3. Non cercare i componenti in ogni fotogramma, in alcuni casi, è possibile utilizzare pattern Singleton
  4. Non distruggere gli oggetti in ogni fotogramma. Crea pool di oggetti.
  5. migliorare le emissioni di particelle e fare il meno possibile
  6. Migliorare shader. Se usi gli shader mobili per l'uso mobile. Per esempio cambia Diffuse shader a Mobile/Diffuse.

Ecco alcuni link utili Object pooling video tutorial, Singleton pattern Unity3d c#

+0

Grazie per i tuoi suggerimenti: mi assicurerò di passare attraverso tutti quelli che ottimizzo il gioco. Tuttavia, temo che questo non risponda alla mia domanda iniziale sull'esistenza o meno di differenze tra le impostazioni di qualità. Nel mio caso tutte le impostazioni/caratteristiche sono identiche per tutte le impostazioni di qualità - ma ancora quando passo dal più basso (FASTEST) a qualsiasi altro livello di qualità, vedo un enorme calo delle prestazioni. Avrebbe senso se tutte le altre funzionalità fossero abilitate mentre cambio livello - ma tutte le impostazioni sono le stesse! – Jokode

Problemi correlati