
Dies ist der erste in einer Reihe von Artikeln, in denen Optimierungstipps für Ihre Unity Projekte vorgestellt werden. Verwenden Sie sie als Leitfaden für die Ausführung mit höheren Bildraten mit weniger Ressourcen. Sobald Sie diese Best Practices ausprobiert haben, sollten Sie sich unbedingt die anderen Seiten der Serie ansehen:
Sehen Sie sich unsere neuesten Optimierungsleitfäden für Unity 6-Entwickler und Grafiker an:
Eine gut optimierte Asset-Pipeline kann die Ladezeiten beschleunigen, die Speichernutzung reduzieren und die Laufzeitleistung verbessern. Durch die Zusammenarbeit mit einem erfahrenen Technical Artist kann Ihr Team Asset-Formate, Spezifikationen und Importeinstellungen definieren und durchsetzen, um einen effizienten und rationalisierten Workflow zu gewährleisten.
Verlassen Sie sich nicht nur auf die Standardeinstellungen. Nutzen Sie die plattformspezifische Registerkarte Überschreibung, um Assets wie Texturen, Mesh-Geometrie und Audiodateien zu optimieren. Falsche Einstellungen können zu größeren Build-Größen, längeren Build-Zeiten und schlechter Speichernutzung führen.
Nutzen Sie Voreinstellungen, um auf Ihre spezifischen Projektanforderungen zugeschnittene Basiseinstellungen festzulegen. Dieser proaktive Ansatz trägt dazu bei, dass Assets von Anfang an optimiert werden, was zu einer besseren Leistung und einer konsistenteren Erfahrung über alle Plattformen hinweg führt.
Weitere Anleitungen finden Sie in den Best Practices für Grafik-Assets oder im Kurs 3D Art Optimization for Mobile Applications auf Unity Learn. Diese Ressourcen liefern wertvolle Erkenntnisse, die Ihnen helfen, fundierte Entscheidungen zur Asset-Optimierung für Unity Web-Builds, mobile Anwendungen und XR zu treffen.

Deaktivieren Sie in den Player-Einstellungen die Auto Graphics API für nicht unterstützte Plattformen, um zu verhindern, dass übermäßige Shader-Varianten generiert werden. Deaktivieren Sie die Zielarchitekturen für ältere CPUs, wenn Ihre Anwendung sie nicht unterstützt.
Deaktivieren Sie in den Qualitätseinstellungen unnötige Qualitätsstufen.
Erfahren Sie mehr über die Graphics API.

Die Umstellung des Skripting-Backends von Mono auf IL2CPP (Intermediate Language to C++) kann eine insgesamt bessere Laufzeitleistung bieten. Es kann jedoch auch die Build-Zeiten erhöhen. Einige Entwickler bevorzugen Mono lokal für eine schnellere Iteration und wechseln dann für Build-Maschinen und/oder Versionskandidaten zu IL2CPP. Weitere Informationen zur Reduzierung Ihrer Build-Zeiten finden Sie in der Dokumentation Optimizing IL2CPP Build times.
Hinweis: Mit dieser Option konvertiert Unity ILcode aus Skripten und Assemblys in C++, bevor eine native Binärdatei (.exe, .apk, .xap) für Ihre Zielplattform erstellt wird.
Lesen Sie die Einführung in IL2CPP-interne Umgebungen oder lesen Sie die Handbuchseite Compileroptionen, um zu erfahren, wie sich die verschiedenen Compileroptionen auf die Laufzeitleistung auswirken.
Mobile Projekte müssen die Bildraten mit der Akkulaufzeit und der thermischen Drosselung ins Gleichgewicht bringen. Statt die Grenzen Ihres Geräts auf 60 FPS zu verschieben, sollten Sie den Betrieb mit 30 FPS als Kompromiss betrachten. Unity ist standardmäßig auf 30 FPS für Mobilgeräte festgelegt.
Bei der Ausrichtung auf XR Plattformen sind die Überlegungen zur Framerate noch kritischer. Eine Bildwiederholrate von 72 FPS, 90 FPS oder sogar 120 FPS ist oft erforderlich, um die Immersion aufrechtzuerhalten und Bewegungsübelkeit zu vermeiden. Diese höheren Bildraten sorgen für ein flüssiges und reaktionsschnelles Erlebnis, was für den Komfort in VR-Umgebungen von entscheidender Bedeutung ist. Diese stellen sich jedoch vor allem bei Stand-VR-Headsets mit eigenen Herausforderungen hinsichtlich Stromverbrauch und Wärmemanagement.
Bei der Wahl der richtigen Bildwiederholrate geht es darum, die spezifischen Anforderungen und Einschränkungen Ihrer Zielplattform zu verstehen, egal ob es sich um ein mobiles Gerät, ein eigenständiges VR Headset oder ein AR-Gerät handelt. Durch die sorgfältige Auswahl einer geeigneten Bildrate können Sie sowohl die Leistung als auch die Benutzererfahrung auf verschiedenen Plattformen optimieren.
Mit Application.targetFrameRate können Sie die Bildrate auch während der Laufzeit dynamisch anpassen. Bei langsamen oder relativ statischen Szenen können Sie beispielsweise unter 30 FPS fallen und höhere FPS für das Gameplay reservieren.
Weitere Informationen finden Sie in der Dokumentation.
Unity bündelt den Beschleunigungsmesser Ihres Mobilgeräts mehrmals pro Sekunde. Deaktivieren Sie dies, wenn es nicht in Ihrer Anwendung verwendet wird, oder reduzieren Sie seine Häufigkeit für eine bessere Gesamtleistung.
Erfahren Sie mehr über den Beschleunigungsmesser.

Teilen Sie Ihre Hierarchien auf. Wenn Ihre GameObjects nicht in einer Hierarchie verschachtelt werden müssen, vereinfachen Sie die Elternschaft.
Kleinere Hierarchien profitieren von Multithreading, um die Transforms in Ihrer Szene aufzufrischen. Komplexe Hierarchien verursachen unnötige Transformationsberechnungen und höhere Kosten für die Garbage Collection.
Unter Optimierung der Hierarchie finden Sie in diesem Unite Vortrag Tipps zu Transformationen.
Betrachten Sie diese beiden Beispiele oben mit demselben Modell und derselben Textur. Die Einstellungen auf der linken Seite belegen fast das 26-fache des Speichers als die auf der rechten Seite, ohne dass sich die visuelle Qualität erheblich verbessert.
Verwenden Sie Adaptive Scalable Texture Compression (ATSC) für Mobilgeräte, XR und das Internet. Die allermeisten Spiele, die sich in der Entwicklung befinden, zielen tendenziell auf Geräte mit Min-Spezifikation ab, die ATSC-Kompression unterstützen.
Die einzigen Ausnahmen sind:
Wenn komprimierte Formate wie PVRTC und ETC nicht ausreichend hochwertig sind und ASTC auf Ihrer Zielplattform nicht vollständig unterstützt wird, versuchen Sie es mit 16-Bit-Texturen anstelle von 32-Bit-Texturen.
Weitere Informationen zum empfohlenen Texturkompressionsformat nach Plattform finden Sie im Handbuch.

Texturen können überschüssige Ressourcen verbrauchen, daher ist die Optimierung Ihrer Importeinstellungen von entscheidender Bedeutung. Befolgen Sie im Allgemeinen diese Richtlinien:
Erfahren Sie mehr über die Texturimporteinstellungen.
Atlasing ist der Prozess, bei dem mehrere kleinere Texturen zu einer einzigen größeren Textur zusammengefasst werden. Texturatlasse reduzieren die Speichernutzung und erfordern weniger Draw Calls, wodurch der Aufwand für die GPU reduziert wird.
Kombinieren Sie Texturen und remappen Sie UVs für jede 3D Geometrie, die keine hochauflösenden Maps erfordert. Mit einem visuellen Editor können Sie die Größen und Positionen im Texturatlas oder Sprite Sheet festlegen und priorisieren.
Der Texture Packer konsolidiert die einzelnen Maps in einer großen Textur. Unity kann dann einen einzigen Draw Call durchführen, um mit einem geringeren Performance Overhead auf die gepackten Texturen zuzugreifen.
Lesen Sie hier mehr über Sprite Atlasse.

Höher aufgelöste Modelle bedeuten mehr Speichernutzung und möglicherweise längere GPU-Zeiten. Benötigt Ihre Hintergrundgeometrie eine halbe Million Polygone? Ziehen Sie in Betracht, Modelle in Ihrem DCC-Paket Ihrer Wahl zu reduzieren. Löschen Sie nicht sichtbare Polygone aus der Sicht der Kamera und verwenden Sie Texturen und normale Maps für feine Details anstelle von Meshes mit hoher Dichte.

Genau wie Texturen können Meshes erheblichen Speicher verbrauchen, wählen Sie also optimale Importeinstellungen für sie. Reduzieren Sie den Speicherbedarf von Meshes mit den folgenden Vorgehensweisen:
Normale und Tangenten deaktivieren: Wenn Sie absolut sicher sind, dass das Mesh-Material keine Normalen oder Tangenten benötigt, deaktivieren Sie diese Optionen, um zusätzliche Einsparungen zu erzielen.

Weitere Mesh-Optimierungsoptionen sind in den Player-Einstellungen verfügbar:
Durch die Automatisierung des Audit-Prozesses vermeiden Sie versehentliche Änderungen der Asset-Einstellungen. Der AssetPostProcessor kann Ihnen helfen, Ihre Importeinstellungen zu standardisieren oder bestehende Assets zu analysieren. Es ermöglicht Ihnen, Skripts auszuführen, wenn Sie Assets importieren, und fordert Sie im Wesentlichen dazu auf, die Einstellungen vor und/oder nach dem Import von Modellen, Texturen, Audio und mehr anzupassen.
Lesen Sie mehr über Asset Auditing im Leitfaden zur Optimierung.
Unity verwendet einen Ringpuffer, um Texturen auf die GPU zu übertragen. Sie können diesen async Texturpuffer manuell über QualitySettings.asyncUploadBufferSize anpassen.
Wenn entweder die Uploadrate zu langsam ist oder der Haupt-Thread stockt, während mehrere Texturen gleichzeitig geladen werden, passen Sie diese Texturpuffer an. Normalerweise können Sie den Wert (in MB) auf die Größe der größten Textur festlegen, die Sie in der Szene laden müssen.
Beachten Sie, dass das Ändern der Standardwerte zu einem hohen Speicherdruck führen kann. Außerdem können Sie den Ringpufferspeicher nicht an das System zurückgeben, nachdem Unity ihn zugewiesen hat. Wenn der GPU-Speicher überlastet wird, entlädt die GPU die neueste und am wenigsten verwendete Textur und zwingt die CPU, sie beim nächsten Aufrufen des Kamerastumpfs erneut zu laden.
Sehen Sie sich alle Speicherbeschränkungen für Texturpuffer im Memory-Management-Tutorial an und erfahren Sie unter Optimierung der Ladeleistung, wie Sie die Ladezeiten verbessern können.
Das Mip Map Streaming System gibt Ihnen die Kontrolle darüber, welche Mip Map Level in den Speicher geladen werden sollen. Aktivieren Sie es, indem Sie in den Qualitätseinstellungen von Unity (Bearbeiten > Projekteinstellungen > Qualität) die Option Textur-Streaming aktivieren. Sie können Streaming Mip Maps in den Texturimporteinstellungen unter Erweitert aktivieren.
Dieses System reduziert den Gesamtspeicherbedarf für Texturen, da es nur die Mip Maps lädt, die für das Rendering der aktuellen Kameraposition erforderlich sind. Andernfalls lädt Unity standardmäßig alle Texturen.
Textur-Streaming nutzt eine kleine Menge CPU-Ressourcen, um potenziell viel GPU-Speicher einzusparen. Es reduziert auch automatisch die Mip-Map-Level, um innerhalb des benutzerdefinierten Memory-Budgets zu bleiben.
Sie können die Mip Map Streaming API zur weiteren Steuerung verwenden.

Das Addressable Asset System bietet eine vereinfachte Möglichkeit, Ihre Inhalte zu verwalten. Dieses vereinheitlichte System lädt AssetBundles nach „Adresse“ oder Alias asynchron aus einem lokalen Pfad oder einem Netzwerk zur Remote-Inhaltsbereitstellung (CDN).
Wenn Sie Ihre Nicht-Code-Assets (Modelle, Texturen, Prefabs, Audio und sogar ganze Szenen) in ein AssetBundle aufteilen, können Sie sie als herunterladbaren Inhalt (DLC) trennen.
Verwenden Sie dann Addressables, um einen kleineren anfänglichen Build für Ihre mobile Anwendung zu erstellen. Mit Cloud Content Delivery können Sie Ihre Spielinhalte hosten und den Spielern bereitstellen, während sie durch das Spiel laufen.
Sehen Sie sich das Tutorial Erste Schritte mit Addressables in Unity Learn an, um einen schnellen Überblick darüber zu erhalten, wie das Addressable Asset System in Ihrem Projekt funktionieren kann.
Klicken Sie hier, um zu erfahren, wie das Addressable Asset System das Asset-Management entlasten kann.


Weitere Best Practices und Tipps für fortgeschrittene Unity Entwickler finden Sie im Hub für Best Practices. Wählen Sie aus über 30 Leitfäden aus, die von Branchenexperten, Unity Entwicklern und Technical Artists erstellt wurden und Ihnen helfen, mit den Toolsets und Systemen von Unity effizient zu entwickeln.