Unity3D Profiler mi dà punte che riguardano principalmente la garbage collection. Nello screenshot qui sotto, i tre picchi rossi rappresentano tre bancarelle che avevo nel mio gameplay. Ciascuna di queste bancarelle è 100 + ms e la maggior parte del tempo è stata spesa su TrackDependencies
.Unity3D: ottimizza la garbage collection
Secondo Unity instruction, ho provato ad aggiungere questo per il mio codice:
if (Time.frameCount % 30 == 0)
{
System.GC.Collect();
}
Questo non ha aiutato. Ho ancora i picchi e continuano a prendere 100 + ms. Cosa sta succedendo esattamente e cosa posso fare per ottimizzare il mio gioco?
PS:
sto dinamicamente creare e distruggere un sacco di GameObject
s nel mio gioco. Potrebbe essere un problema?
Non ho una concatenazione di stringhe in un loop o array come valore restituito come caveat in the post.
stai distruggendo oggetti da qualche parte nel codice? – Heisenbug
Se possibile, mettere in comune gli oggetti per evitare una distruzione eccessiva potrebbe essere una buona soluzione. – SlxS
@Heisenbug Sì, sto creando e distruggendo dinamicamente molti oggetti nel mio gioco. Nella mia funzione object destroy ho anche chiamato 'Resources.UnloadUnusedAssets();' – CherryQu