Entwicklung - Unity3D - Web

Online-Gedächtnis - Stichpunkte zur Erinnerungshilfe

NAVIGATION - SEARCH

Mobile GPU - Optimierung

  • Niedrige Vertex-Anzahl bei Modellen
  • "Occlusion culling" (auch automatisch durch "viewing frustrum" - Sichtweite der Kamera)
  • komplexe Shader vermeiden, "Mobile"-Versionen nutzen (vorallem keine "fragment shader", also Pro-Pixel-Shader)
  • Texturen komprimieren und Größe reduzieren
  • Mipmaps nutzen (nicht für UI!)
  • Level of Detail (LoD) anwenden
  • wenige Materialen verwenden -> besseres "batching", siehe DrawCall - Optimierungen
  • Texturen zusammenfassen in "texture atlases" (dann auch entsprechend Renderer.sharedMaterial verwenden)
  • Light Mapping ("baking") verwenden, siehe Licht - Optimierungen
  • Transparenz vermeiden (bzw. alpha cut/test Shader)
  • wenige Lichter
  • Post Processing minimieren
Läuft das Spiel schneller bei niedrigerer Auflösung? -> Füllratenproblem
  • Alpha-testing Shader gegen Alpha-blend austauchen
  • einfachere Shader verwenden (Mobile, kein pow, exp, log, sin, tan usw.)

Arbeitsspeicher - Optimierung

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