Erfassen von Assets
Das Erfassen von Assets ist der Teil der Lokalisierungspipeline, der die meisten Ressourcen verbraucht. Der Grund dafür ist, dass die Lokalisierung oft Assets (und ihre Abhängigkeiten) laden muss, um die darin enthaltenen lokalisierbaren Textwerte zu extrahieren. Um die Anzahl der Assets, die bei einer Erfassung tatsächlich geladen werden müssen, zu minimieren, fügt Unreal Engine (UE) dem Header von Asset-Dateien einen „Erfassungs-Cache“ hinzu (der beim Speichern generiert wird), was bedeutet, dass nur der Asset-Header geladen werden muss, um den Text zu erfassen.
Sie können sich den aktuellen Cache eines Assets anzeigen lassen, indem Sie im Content Browser das Menü Asset Localization öffnen und dort Show Localization Cache auswählen.
Bestimmte Asset-Typen (z. B. Blueprints oder Levels mit einem nicht leeren Level-Blueprint) können aufgrund ihrer Verwendung von Bytecode keinen Erfassungs-Cache erzeugen. Der Grund dafür ist, dass UE Textwerte aus Bytecode erfasst, aber Bytecode ist zu unbeständig, um beim Speichern zuverlässig zwischengespeichert zu werden.
Eine Zusammenfassung, wie viele Assets aufgrund von Bytecode nicht zwischengespeichert wurden, wird während einer Asset-Erfassung im Log ausgegeben. Wenn Sie feststellen, dass Ihre Asset-Erfassung die meiste Zeit mit dem Zusammenstellen von Assets verbringt, die Bytecode enthalten, sollten Sie in Betracht ziehen, den Text innerhalb dieser Assets in String-Tabellen zu verschieben, damit Sie stattdessen auf diese Einträge verweisen können.
Während einer Asset-Erfassung werden nur Assets geladen, die einen serialisierten Textwert enthalten, der FText::ShouldGatherForLocalization
besteht. Sprachregion-invarianter, leerer und Nur-Leerzeichen-Text sowie Stringtabellenreferenzen scheitern alle an dieser Prüfung. Aus diesem Grund kann die Verwendung einer Stringtabelle die Performance der Asset-Erfassung verbessern.
Validieren von Asset-Caches
Es gibt einige Hilfsmittel, mit denen Sie abgelaufene und fehlende Erfassungs-Caches für Assets in Ihrem Projekt melden oder beheben können. Die Ausführung dauert eine Weile, da alle Assets in den Speicher geladen werden müssen. Wenn Sie jedoch eine große Anzahl nicht gespeicherter Assets haben, können sie in Zukunft erhebliche Einsparungen ermöglichen. Diese Hilfsmittel werden als zusätzliche Argumente im normalen Lokalisierungs-Commandlet ausgeführt.
Beispiel:
-run=GatherText-config=Config/Localization/Game_Gather.ini
-ReportStaleGatherCache
Wenn Sie ein Projekt von einer Unreal Engine-Version älter als 4.20 aktualisieren, sollten Sie zumindest ReportStaleGatherCache
ausführen, um zu überprüfen, ob Ihr Cache auf dem neuesten Stand ist, da abgelaufene Caches zu Lokalisierungsproblemen führen können.
Diese Optionen werden im Localization Dashboard nicht angezeigt. Stattdessen müssen Sie die vom Dashboard generierte INI-Datei für Ihr Lokalisierungsziel verwenden und das Lokalisierungs-Commandlet manuell ausführen.
Argument | Beschreibung |
---|---|
ReportStaleGatherCache |
Generiert eine StaleGatherCacheReport.txt -Datei zusammen mit dem Manifest für Ihr Lokalisierungsziel. Diese Datei enthält eine Liste aller Assets, die einen abgelaufenen Erfassungs-Cache enthalten. |
FixStaleGatherCache |
Versucht, Assets mit einem abgelaufen Erfassungs-Cache automatisch zu reparieren, indem sie erneut gespeichert werden. |
FixMissingGatherCache |
Bei Assets, die zu alt für einen Erfassungs-Cache sind, wird versucht, Assets, die keinen Erfassungs-Cache haben, automatisch durch erneutes Speichern zu reparieren. |