Alle Objekte einer Szene laden:
Resources.FindObjectsOfType(typeof(UnityEngine.Object));
Messungen auslesen:
Profiler.GetRuntimeMemorySize(object);
Hilfreich in Kombination mit dem automatischen Laden aller vorhandenen Szenen.
d68046a4-2f86-4767-8cd4-9f0ca22e93a9|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Texturen
- wenn machbar auf Mipmaps verzichten
- komprimieren
- Read/Write abschalten
- Größe anpassen
Analyse und Maßnahmen
- Profiler.GetRuntimeMemorySize() RAM-Verbrauch durch Objekte
- Resources.UnloadAsset (Referenz bleibt bestehen)
- Resources.UnloadUnusedAssets (unreferenzierte)
- Vor und nach dem Laden eines Levels System.GC.Collect
- structures -> Stack, classes -> Heap
- foreach vermeiden, da Enumeratoren erschaffen werden
- analog anonyme Methoden und Lambdas
- AssetBundles verwenden
- strings nicht konkatenieren, ansonsten StringBuilder nutzen
- Asset pool verwenden bei häufigen Objekten, wie z.B. Geschosse
6da1cec0-0d26-41ec-84e6-5493717cb903|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04