Ich habe eine Szene mit einem massiven Gelände. Das Laden dauerte lange (ungefähr 60 Sekunden), als ich die Wiedergabetaste drückte. Ich bin im Editor.
Ich habe es vorgefertigt.
Jetzt dauerte das Laden nur noch etwa 5 Sekunden, als ich die Wiedergabetaste drückte. Warum?
Ich gehe davon aus, dass beim Vorfertigen einige Vorladevorgänge durchgeführt werden, die Vorfertigung jedoch nur wenige Sekunden dauert. Das konnte also nicht der Grund sein. Irgendwelche Ideen? Ich bin ratlos.
unity
performance
loading
preload
Evorlor
quelle
quelle
Antworten:
Was sind Fertighäuser?
Die Unity-Dokumentation für Fertighäuser beschreibt sie einfach als
Wie wirkt es sich auf die Leistung aus?
Meine Erfahrung zeigt, dass dies nicht der Fall ist. Da Google weder auf eine starre Analyse verweist, ob Prefabs die Leistung verbessern, noch habe ich diesbezüglich Experimente durchgeführt, erklärt diese Frage von Unity answers.com dies folgendermaßen:
Das ist alles. Wenn es Berichte oder Analysen zur Leistungsverbesserung oder ähnliches gibt, möchte ich dies möglicherweise auch wissen. Vielen Dank.
BEARBEITEN: Ich habe versucht, was Sie gesagt haben, ein Terrain von 50.000 x 50.000 mit einer Höhenkartenauflösung von 512 erstellt (konnte nicht höher werden).
Der Zeitunterschied war nicht signifikant, aber hier ist, was mir aufgefallen ist. Immer wenn Sie die Geländeeinstellungen in der unteren rechten Ecke ändern, findet eine Verarbeitung statt. Wenn Sie dies abschließen, verringert sich die Startzeit.
So sieht es aus:
Ich kannte Ihre Geländeeinstellungen nicht und wusste nicht, wie komplex sie waren, aber daraus kann ich schließen, dass die Verarbeitung unten rechts möglicherweise die Ladezeit verwaltet. Möglicherweise wird es in den Speicher geladen und es werden einige einmalige Berechnungen / Verarbeitungen durchgeführt.
quelle
Additiv zu anderen Antworten. Wir haben ein Fliegengewichtsmuster, das sich mit Gedächtnis und Optimierung befasst. Wenn Sie viele Objekte haben, verwenden Sie das Flyweight-Muster, teilen dieselben Daten im selben Speicher und weisen neuen oder unterschiedlichen Funktionen Speicher zu. unit3d verwendet dieses Muster, um mit Fertighäusern zu arbeiten.
Ein anderer Ansatz ist die Programmierung. Das Klonen ist mit weniger Zuordnung viel schneller als das Erstellen eines neuen Objekts. in c # sein MemberWiseClone und sein Instanziieren in Unity
quelle
Prefab dient nur der Wiederverwendbarkeit und hat für eine wiederholbare Aufgabe keinen Zusammenhang mit der Vorverarbeitung. Wenn der Rendervorgang mit Spielobjekten stattfindet und eine Rückverfolgung zum Projektfenster erfolgt, erstellen Sie die Metadatei und speichern Sie einige Informationen darauf. Für das nächste Mal verwendet Unity diese Informationen für das nächste Mal.
quelle