Miglioramento delle prestazioni di un gioco per dispositivi mobili in Unity

Il gioco su dispositivi mobili si è evoluto parecchio negli ultimi anni, passando dall'avere semplici giochi 2D all'offrire un'esperienza 3D completa. Ma nonostante ciò, ha ancora una potenza di elaborazione limitata, quindi per fornire un'esperienza di gioco fluida, è necessario fare alcune considerazioni sulle scelte di design.

Di seguito sono riportati i 5 punti principali da considerare per migliorare le prestazioni sui dispositivi mobili durante lo sviluppo in Unity:

Evita la trasparenza

Il pixel overdraw è piuttosto costoso e potrebbe ridurre drasticamente il framerate sui dispositivi mobili. Per evitare ciò, evita di utilizzare gli Shader trasparenti o praticamente qualsiasi Shader che contenga trasparenza (ad es. Particle Shader).

Per la geometria Opaque usa gli Shader della categoria Mobile.

Evita le ombre in tempo reale

Le ombre in tempo reale possono sembrare interessanti, ma richiedono molta potenza di elaborazione. Quindi è meglio incorporarli invece in Lightmaps.

Utilizzare il batch statico per ridurre le richieste di prelievo

Lo Static Batching è un modo per consentire a Unity di combinare oggetti statici insieme, il che a sua volta ridurrà il numero di chiamate Draw, migliorando così le prestazioni di rendering.

Per abilitare il batch statico, contrassegna tutti gli oggetti statici nella scena come "Batching Static", quindi vai a Modifica -> Impostazioni progetto... -> Player e assicurati che il batch statico sia selezionato.

Utilizzare il batch dinamico con cautela

Il batch dinamico è alquanto controverso. Da un lato consente a Unity di combinare oggetti dinamici in un minor numero di oggetti, migliorando potenzialmente le prestazioni, ma dall'altro deve farlo ogni fotogramma che potrebbe invece danneggiare le prestazioni.

Nel complesso è meglio disabilitare il batch dinamico quando si sceglie come target piattaforme per dispositivi mobili.

Evita di usare OnGUI

OnGUI ti consente di creare rapidamente l'interfaccia utente dal codice, ma è molto lento rispetto a UI Canvas, quindi utilizzalo solo per la prototipazione.