Quando devo contrassegnare GameObjects come statico?


9

Ecco la documentazione Unity corrispondente .

Secondo le spiegazioni delle pagine di documentazione di Unity su Static GameObjects, a volte contrassegnare GameObjects come statico può influire negativamente sulle prestazioni (ad esempio, il batch statico causa un maggiore utilizzo della memoria) .

Quindi, quando dovrei esattamente voler usare queste funzionalità?

Grazie in anticipo.

Note a piè di pagina:
sto attualmente sviluppando un gioco top-down 2D che ha molti Sprite e LineRenderer, ma nessun oggetto 3D (nemmeno un quad). Tutti i GameObject vengono istanziati proceduralmente da prefabbricati prefabbricati. I LineRenderer vengono aggiornati dagli script per ogni frame. E quasi tutti gli Sprite si muovono costantemente. La maggior parte degli Sprites condivide lo stesso materiale. Tutti i LineRenderer condividono anche lo stesso materiale.


1
NON PER GLI ALBERI NELLE FORESTE. Siamo stati morsi da quel male. LUNGO tempo di costruzione, dati MASSIVI nei tuoi livelli. Nota: i documenti su questo in particolare indicano che non dovresti usarlo per le foreste. :)
Almo,

@Almo sono con un ragazzo, riesco a capire questo dolore
Hamza Hasan,

Risposte:


6

Non ci sono regole rigide su quando si dovrebbe o non si deve rendere statico GameObjects.

Per lo meno, fallo solo per oggetti che non si muoveranno mai durante la loro vita. Ma devi sapere cosa fa per valutare se dovresti o meno.

Congela la mesh nei dati della scena, quindi non hai l'overhead dell'oggetto GameObject per l'oggetto. Ciò significa un aumento delle prestazioni a scapito dell'alterazione dei dati di scena al momento della creazione e costi di memoria aggiuntivi per l'applicazione finale costruita.

Questo va bene in molti casi, sebbene possa causare problemi, ad esempio con le foreste. Inoltre, significa che invece di archiviare i verts per l'albero una volta e le copie del disegno della GPU, deve duplicare quei verts ovunque. Ciò richiede tempo durante la compilazione e spazio nell'app. La nostra app è passata da 3-4 GB a 300-400 MB quando abbiamo reso gli alberi non statici. Il tempo di costruzione è andato da 3-4 ore a 1 ora.

Detto questo! Il tuo gioco è 2d e probabilmente trarrebbe vantaggio dall'impostazione di GameObjects nelle scene su statico, a condizione che tu non ne abbia tonnellate.


Rendere statico prefabbricato non rende statiche anche le istanze?
S. Tarık Çetin,

Non se li istanziate in fase di esecuzione ... Come possono essere "statici"? Forse mi sbaglio ... Controllerà.
Almo,

2
Ho appena confermato che, se il prefabbricato è contrassegnato come statico, anche le istanze istanziate sono statiche.
S. Tarık Çetin,

1

Se dico in generale, tutto ciò che non si muoverà mai (nemmeno un pixel) in tutta la vita dell'app dovrebbe essere contrassegnato come statico. Di solito è utile per cuocere le luci, cuocere percorsi di navmesh, ecc.

Bene, se stai sviluppando senza oggetti 3D, rilassati e rilassati. Non è necessario preoccuparsi del rendering in tempo reale, delle ombre o di altri problemi. Anche eliminare l'unica luce arriva con una nuova scena;)

Bene, chiunque può correggermi se sbaglio in qualsiasi posto.


3
Questo è davvero sbagliato per cose come le foreste. Riduce i pareggi ... ma cuoce tutti gli alberi nella rete. Ciò significa che invece di memorizzare una volta i verts per l'albero e le copie del disegno della GPU, deve duplicare quei verts ovunque. Ciò richiede tempo durante la compilazione e spazio nell'app. La nostra app è passata da 3-4 GB a 300-400 MB quando abbiamo reso gli alberi non statici.
Almo,

@Almo huggggeeeeee differenza
Hamza Hasan,

Penso che dovresti chiarire all'inizio della tua risposta che lo stai raccomandando solo perché è un gioco 2d.
Almo,

@Almo Grazie a te, ora penso che il batch statico sia una cosa dannosa da toccare, come un forno di cui non puoi essere sicuro caldo o no. :)
S. Tarık Çetin,

@Almo sentiti libero di modificare questo fratello, se ne hai bisogno. Vai avanti
Hamza Hasan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.