Unity Addressables: immer genug Speicher

Bild

Sie leiten ein Team von mehreren Programmierern und Künstlern, die daran arbeiten, ein wunderschönes PS4-VR-Spiel auf Oculus Quest zu portieren. Sie haben sechs Monate Zeit dafür. Was wird dein erster Schritt sein? Versuchen wir, Unity Addressables zu verwenden.

Sie verstehen, dass Sie mehrere ziemlich schwierige Aufgaben gleichzeitig lösen müssen. Einige werden für Sie schwieriger sein als andere, dies hängt von Ihrer Erfahrung in den einzelnen Bereichen ab. Wenn Sie wählen, welcher von ihnen Ihnen am häufigsten den Schlaf entzogen hat, welcher wird es dann sein?

Ich nehme Folgendes an: Ungefähr 70% der Leser werden sagen, dass das größte Problem beim Portieren eines Spiels auf Quest die CPU- / GPU-Leistung ist. Ich kann das beantworten: höchstwahrscheinlich hast du recht. Die Verbesserung der Produktivität ist einer der schwierigsten Bereiche in einem VR-Spiel. Optimierungen dieser Art erfordern eine gründliche Untersuchung des Produkts, was einige Zeit in Anspruch nimmt. Manchmal ist eine weitere Optimierung nicht möglich, weshalb Sie normalerweise die kostspieligen Elemente des Gameplays und der Grafik loswerden müssen. Und es ist gefährlich, Spieler zu enttäuschen.

Geschwindigkeit, Geschwindigkeit, Geschwindigkeit ... Was erwartet Sie diesbezüglich von der Quest-Plattform? Wie produktiv ist es? Tatsache ist, dass wenn Sie bereits Erfahrung in der Entwicklung hatten, Sie wissen, dass es trotz seiner Mobilität überraschend leistungsfähig ist.

„Komm schon, Autor, warum lügst du? Mein Telefon wird langsamer, sobald ich den zweiten Browser-Tab öffne. Wie können Sie sagen, dass mobile Plattformen produktiv sein können? “

Der große Unterschied liegt im aktiven Kühlsystem von Quest , das seiner CPU / GPU, die von keiner anderen mobilen Plattform bereitgestellt wird, einen großen Vorteil verschafft. Dies ist ein leistungsstarker Ventilator, der Staub von Ihren Haaren wegbläst und verhindert, dass der Prozessor auf Ihrem Gesicht schmilzt.

Darüber hinaus ist ein spezialisierteres Betriebssystem besser für das Rendern von virtueller Realität (Überraschung) optimiert als Standard-Android. In den letzten Jahren hat die mobile Hardware begonnen, feste Plattformen schnell einzuholen.

Gleichzeitig werde ich nicht leugnen, dass die Aufgabe des konstanten Renderns mit einer Frequenz von 72 fps schwierig sein wird, insbesondere für die Ports von VR-Spielen, die von leistungsstarken Plattformen stammen. Wenn wir über Oculus Quest sprechen, können Sie sich den Snapdragon 835 mit einem Bildschirm, einem Akku, vier Kameras und einem Lüfter vorstellen.

Was wie ein Fehler aussieht, kann tatsächlich als Vorteil genutzt werden. Diese mobile Plattform ist ein gut erforschtes Gerät mit schwachem Eisen. Wir können sagen, dass es tausend bekannte Tricks gibt, um die Belastung der CPU und der GPU schnell auf ein akzeptables Maß zu reduzieren. Wenn Sie interessiert sind, können Sie darüber in meinen nachfolgenden Beiträgen lesen. Und in diesem Artikel werden wir die Leistung außer Frage stellen.

Unsere Aufmerksamkeit bei diesem Problem könnte sein, dass Quest im Vergleich zu PS4 eine Hardware-Eigenschaft aufweist, die halb so hoch ist: RAM-Kapazität . Das Volumen verringerte sich nämlich von 8 auf 4 GB RAM. Dies ist eine Annäherung, weil auf beiden Plattformen das Betriebssystem sie nicht erlaubt , vollständig zu nutzen, so dass Sie verfolgenMehrere Subsysteme, die für das Funktionieren des Ökosystems erforderlich sind. In Quest können Sie bis zu 2,2 GB RAM verwenden. Wenn mehr, beginnt das Chaos bereits.

"Aber was meinst du mit Chaos ?" Tatsache ist, dass es für das Spiel wichtig ist, die richtige Speicherverwaltung zu implementieren. Es ist passiert, weil wir zwei Einschränkungen haben:

  • Hard Memory Limit : Wenn Sie einen bestimmten Schwellenwert überschreiten, beendet das Betriebssystem das Spiel
  • Soft Memory Limit

Natürlich wollen wir nicht, dass der erste oder zweite im Spiel passiert. Können Sie sich die Wut eines Spielers vorstellen, der die letzten zwei Stunden seines Passes verloren hat? Ja, er wird definitiv in den Anwendungsspeicher gehen und dort nichts Angenehmes sagen.

Natürlich ist die garantierte Verfügbarkeit von 2,2 GB RAM nicht so hoch. Normalerweise ist dies kein Problem für neue Projekte, bei denen Statistiken von Anfang an ständig überwacht werden, aber es wird definitiv zu einer Schwierigkeit für einen Port mit viel schwächerer Hardware.

Wenn Sie sich in der Vergangenheit mit ähnlichen Ports befasst haben, werden Sie schnell feststellen, wie schwierig es wird, die Menge des verfügbaren Arbeitsspeichers zu halbieren . Es hängt stark davon ab, wie gut die Architektur des Spiels für eine solche Änderung bereit war, aber in den meisten Fällen führt dies nur zu Tränen.

Die beliebtesten Strategien zur Reduzierung des Speicherbedarfs sind das Ändern der Komprimierungsparameter von Assets, das Optimieren von Skripten, das Reduzieren von Shader-Variationen usw. In den meisten Fällen besteht die allererste Entscheidung darin, die Einstellungen für den Texturimport zu ändern. Bei Bedarf können Sie jedoch die Komprimierung von Netzen, Animationen und Sound verwenden. Das Problem ist, dass solche Techniken normalerweise komplex sind und ihre eigene Decke haben .

Nicht alle Plattformen unterstützen dieselben Importparameter: Bei der Entwicklung für verschiedene Geräte steigen die Kosten für die Montagepipeline erheblich, ganz zu schweigen von der Komplexität von Qualitätssicherung, Designgrafiken und Programmierung. Unterstützt dies beispielsweise Android ASTC-Geräte oder nur ETC2 (und im Allgemeinen eines davon)? Oh, und wir brauchen noch 64-Bit-Builds, aber gleichzeitig wollen wir Spieler mit 32-Bit-Versionen behalten. Wie viele einzelne APKs müssen wir für jedes Update im Spiel erstellen und testen? Wenn Sie Ihr Leben vereinfachen möchten, sollten Sie sich nicht nur auf diese Techniken verlassen.

Deshalb müssen wir tiefer gehen. Natürlich möchten wir, dass alles so einfach wie möglich ist, insbesondere beim Erstellen eines Ports. Das Spiel vollständig für die Leistung zu recyceln, ist eine noch schlechtere Option, als es einfach nicht zu portieren. Als Teil des Artikels werde ich einen der wichtigsten Vorteile aufzeigen: Sie lernen, wie Sie die erforderliche Speichermenge in nur wenigen Stunden um die Hälfte reduzieren können .

Ist das nicht toll?

Fragen wir mich: Ist das in Ihrem Fall wirklich möglich? Ich werde antworten: Es hängt von den Anfangsbedingungen ab, aber meiner Erfahrung nach lautet die Antwort JA . Unity Addressables kann hier einen großartigen Service leisten. Was ist der Trick? Sie müssen den Prozess investieren und beherrschen. Mit einem solchen Workflow können Sie jedoch den Titel eines Mitarbeiters des Monats gewinnen.

Wenn Sie interessiert sind, lesen Sie weiter.

In diesem Beitrag werden wir vom traditionellen Asset Management zum adressierbaren Asset Management übergehen . Um diesen Prozess zu veranschaulichen, portieren wir ein vereinfachtes Old-School-Projekt in die neue Ära der Unity Addressables.

Sie können eine Frage stellen: Warum zeigen Sie das Ergebnis nicht einfach bei Ihrem eigentlichen Job?

In einer Welt ohne Konkurrenz würde ich Ihnen nur alle Materialien zeigen, die ich erstellt habe. In der realen Welt werde ich jedoch höchstwahrscheinlich dafür bestraft. Und dann werden sie ihn ins Gefängnis bringen.

Stattdessen biete ich meine Hilfe an: Wir werden ein Projekt ausarbeiten, das alle Schwierigkeiten aufzeigt, auf die Sie morgen bei Ihrem nächsten Projekt stoßen werden. Zunächst nehmen wir Unity Addressables in unsere Familie empfohlener Pakete auf .

In diesem Beitrag werde ich Ihnen Addressables vorstellen, damit Sie in wenigen Minuten Ihr eigenes Unity Addressables-System implementieren können .


Unity Addressables: Warum werden sie benötigt?


Dieser wichtige Abschnitt sollte beachtet werden. Unsere Aufgabe ist es, einfache Möglichkeiten zur Optimierung der Speichernutzung zu erkennen und diese schnell umzusetzen. Es gibt verschiedene Möglichkeiten, dies zu tun, aber eine der mächtigsten und gleichzeitig einfachsten Möglichkeiten besteht darin, die erste Szene zu laden und den Profiler zu starten. Warum?

Da die nicht optimierte Architektur des Spiels zu jedem Zeitpunkt des Spiels erkannt werden kann, können Sie dies am schnellsten überprüfen, indem Sie die erste Szene profilieren. Der Grund dafür ist, dass Skripte wie Singleton-s, die für alle Fälle Links zu allen Assets enthalten, häufig übermäßig aktiv verwendet werden .

Mit anderen Worten, viele Spiele haben normalerweise ein allmächtiges Skript, das eine Menge Links zu Assets erstellt .Diese Komponente hält jedes Asset ständig geladen, unabhängig davon, ob es gerade verwendet wird.

Wie schlimm ist das

Situationen sind anders. Wenn Ihr Spiel wahrscheinlich durch den Speicher begrenzt ist? Dann ist dies eine sehr riskante Entscheidung, da das Spiel mit der Zunahme der Anzahl der hinzugefügten Assets nicht gut skaliert werden kann (denken Sie beispielsweise an zukünftige DLCs). Wenn Sie für heterogene Geräte entwickeln, z. B. für Android, verfügen Sie nicht über eine einzige Speichermenge. Jedes Gerät hat seine eigene Kapazität, daher müssen Sie sich auf den schlimmsten Fall verlassen. Das Betriebssystem kann jederzeit entscheiden, die Anwendung zu beenden, wenn der Benutzer plötzlich wechselt, um auf eine Nachricht auf Facebook zu antworten. Wenn er zurückkommt, wartet eine Überraschung auf ihn - das Spiel wurde bereits beendet.

Macht es Spaß?

Absolut nicht.

Erschwerend kommt hinzu, dass Sie nur viel Glück wünschen können, wenn Sie sich später entscheiden (oder jemand für Sie entscheidet), das Spiel auf eine andere, weniger leistungsfähige Plattform zu portieren, während Sie das Crossplay beibehalten. Sie werden definitiv nicht mit einem solchen technischen Problem konfrontiert sein wollen.

Gibt es andererseits Situationen, in denen traditionelles Asset Management angemessen ist? Ja natürlich. Wenn Sie für eine einheitliche Plattform wie PS4 entwickeln und die meisten Anforderungen von Anfang an bekannt sind, können die Vorteile globaler Objekte möglicherweise die zusätzliche Komplexität eines verbesserten Speicherverwaltungssystems überwiegen.

Weil Sie zugeben müssen: Das gute alte globale Objekt, das alles speichert, was wir brauchen, ist eine einfache Lösung, wenn es zu Ihnen passt. Es vereinfacht den Code und lädt alle referenzierten Assets vor.

Wie dem auch sei, die herkömmliche Speicherverwaltung ist für Entwickler, die den Einsatz von Eisenressourcen maximieren möchten, nicht akzeptabel . Sie lesen einen Artikel, was bedeutet, dass Sie Ihre Fähigkeiten verbessern möchten. Es ist also an der Zeit, dies zu tun.

Treffen Sie Unity Addressables.

Projektanforderungen mit Unity Addressables


Wenn Sie diesen Beitrag nur lesen möchten, reicht der Bildschirm aus. Wenn du alles mit mir machen willst. dann benötigen Sie Folgendes:

  • Hände
  • Kluger Kopf
  • Einheit 2019.2.0f1 oder höher
  • Level 1 Projekt mit GitHub (zip herunterladen oder über Kommandozeile)
  • Der Wunsch, in die Innenseiten von Unity Addressables einzutauchen

Das Git-Repository enthält drei Commits, eines für jede Ebene dieses Beitrags (es sei denn, ich vermische etwas und erstelle ein Commit mit einem Fix).

Laden Sie das Projekt im ZIP-Format direkt von GitHub herunter


Level 1 Entwickler: Traditionelles Asset Management


Wir beginnen mit der einfachsten Asset-Management-Methode. In unserem Fall müssen wir dazu eine Liste der direkten Links zu Skybox-Materialien in der Komponente erstellen.

Wenn Sie dies mit mir tun, dauert die Vorbereitung drei einfache Schritte:

  1. Laden Sie das Projekt von git herunter
  2. Öffnen Sie ein Projekt in Unity
  3. Klicken Sie auf die Wiedergabetaste!

Fein. Jetzt können Sie auf die Schaltflächen klicken, um die Skybox zu ändern. So originell ... und langweilig. Soweit ich weiß, bisher keine Unity Addressables.

Bald werden Sie sehen, warum wir diese Momente der Langeweile ertragen.

Erstens, wie ist unser Projekt aufgebaut? Es basiert auf zwei Hauptsystemen. Zum einen haben wir ein Game Manager- Objekt . Diese Komponente ist das Hauptskript, das Links zu Skybox-Materialien speichert und diese abhängig von UI-Ereignissen wechselt. Es ist ziemlich einfach.

using UnityEngine;

public class Manager : MonoBehaviour
{
    [SerializeField] private Material[] _skyboxMaterials;

    public void SetSkybox(int skyboxIndex)
    {
        RenderSettings.skybox = _skyboxMaterials[skyboxIndex];
    }
}

Manager bietet dem UI-System eine Funktion zum Anwenden von spezifischem Material auf die Szene mithilfe der RenderSettings- API .

Zweitens haben wir einen CanvasSkyboxSelector . Dieses Spielobjekt enthält eine Canvas-Komponente, die eine Reihe vertikal verteilter Schaltflächen rendert. Jede Taste ruft beim Drücken die oben genannte Manager- Funktion auf , die die gerenderte Skybox abhängig von der ID der Schaltfläche ersetzt. Mit anderen Worten, das OnClick- Ereignis jeder Schaltfläche ruft die SetSkybox- Funktion des Manager- Objekts auf. Es ist einfach, nicht wahr?


Unity Addressables - Szenenhierarchie

Jetzt ist es Zeit, loszulegen. Öffnen wir den Profiler ( Strg / cmd + 7 oder Fenster - Analyse - Profiler ). Ich gehe davon aus, dass Sie mit diesem Tool vertraut sind, was bedeutet, dass Sie wissen, was mit der oberen Aufnahmetaste zu tun ist . Stoppen Sie die Aufnahme nach einigen Sekunden und sehen Sie sich die Messdaten an: CPU, Speicher usw. Gibt es etwas interessantes?

Die Leistung ist ziemlich gut, und dies ist angesichts des Umfangs des Projekts nicht überraschend. Sie können dieses Projekt einfach in ein VR-Spiel verwandeln, und ich garantiere, dass sich keiner der Spieler krank fühlt, wie es in Eve: Valkyrie häufig der Fall ist .

In unserem Fall konzentrieren wir uns auf den Speicherbereich. Im einfachen Anzeigemodus sehen Sie ungefähr Folgendes:


Level 1 Asset Management - Einfache Speicherprofilerstellung Die

Werte für die Texturgröße scheinen zu groß zu sein, um jeweils eine Skybox anzuzeigen, nicht wahr? Eine Überraschung erwartet Sie: Ein ähnliches Muster finden Sie in vielen nicht optimierten Spielen, deren Entwicklung Sie leiten werden . In unserem Fall handelt es sich jedoch nur um eine Reihe von Skyboxen. In anderen Projekten sind dies Charaktere, Planeten, Geräusche, Musik ...

Wenn die Verantwortung für die Arbeit mit vielen Assets bei Ihnen liegt, bin ich froh, dass Sie diesen Artikel lesen. Ich werde Ihnen beim Übergang zu einer gut skalierbaren Lösung helfen.

Es ist Zeit für Magie. Schalten Sie den Speicherprofiler in den ausführlichen Modus. Schau es dir an!


Level 1 Asset Management - Detaillierte Speicherprofilerstellung

Verdammt, was ist hier passiert? Alle Skybox-Texturen werden in den Speicher geladen, es wird jedoch jeweils nur eine angezeigt. Sehen Sie, was wir haben? Diese Roharchitektur benötigt bis zu 400 MB .

Dies passt definitiv nicht zu uns, da dies nur ein kleiner Teil des zukünftigen Spiels ist. Die Lösung dieses Problems selbst wird zur Grundlage des nächsten Abschnitts.

Zusammenfassen:

  • Traditionelles Asset Management beinhaltet direkte Links
  • Daher werden alle Objekte ständig geladen
  • Das Projekt lässt sich nicht gut skalieren


Level 2 Entwickler: Unity Addressables-Prozess


In Spielen beginnen wir mit Level 1, und das passt zu uns, aber sobald wir die Spielregeln herausgefunden haben, ist es Zeit, die sicheren Stadtmauern zu verlassen und unser Level zu erhöhen. Darum geht es in diesem Abschnitt.

Laden Sie jetzt das Level 2-Projekt herunter .

Wie wir bereits im Profiler gesehen haben, werden alle Skyboxen in den Speicher geladen, obwohl nur eine aktiv verwendet wird . Diese Lösung lässt sich nicht skalieren, da wir irgendwann durch die Anzahl der verschiedenen Asset-Variationen begrenzt sein werden, die wir dem Spieler anbieten können. Welchen Rat kann ich geben? Beschränken Sie das Interesse des Spiels nicht auf Benutzer.

Lass mich dir helfen. Nehmen Sie eine Schaufel, um einen Jailbreak-Tunnel der traditionellen Vermögensverwaltung zu graben. Fügen wir unserer Sammlung ein neues interessantes Tool hinzu: die Unity Addressables API .

Als erstes müssen wir das Addressables-Paket installieren. Gehen Sie dazu zu Fenster → Paketmanager :


Unity Package Manager - Unity Addressables

Nach der Installation müssen die Materialien als Addressables markiert werden. Wählen Sie sie aus und aktivieren Sie das Adressable-Flag im Inspektorfenster.


Verwalten von Level 2-Assets (Unity Addressables)

Wir bitten Unity daher höflich, diese Materialien und ihre Texturabhängigkeiten in die Addressables-Datenbank aufzunehmen. Diese Datenbank wird während der Erstellung verwendet, um Assets in Blöcke zu packen, die jederzeit im Spiel problemlos geladen werden können.

Jetzt werde ich dir etwas cooles zeigen. Öffnen Sie das Fenster -> Asset Management -> Addressables . Ratet mal, was das ist? Dies ist unsere Datenbank, die gerne zum Leben erweckt wird!


Das Verwalten von Unity Addressables auf Asset Level 2 ist das Hauptfenster

Sehr geehrter Leser, dies war der einfache Teil. Und jetzt beginnt der Spaß.

Ich möchte, dass Sie unseren alten Freund aus dem vorherigen Abschnitt besuchen: Sir Manager . Wenn wir es überprüfen, werden wir feststellen, dass es immer noch direkte Links zu Assets speichert! Das brauchen wir nicht.

Stattdessen bringen wir dem Manager bei, wie indirekte Links verwendet werden, d. H. AssetReference (in Unreal Engine werden sie als weiche Referenzen bezeichnet).

Lassen Sie uns unsere Komponente schöner machen:

using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;

public class Manager : MonoBehaviour
{
    [SerializeField] private List<AssetReference> _skyboxMaterials;

    private AsyncOperationHandle  _currentSkyboxMaterialOperationHandle;

    public void SetSkybox(int skyboxIndex)
    {
        StartCoroutine(SetSkyboxInternal(skyboxIndex));
    }

    private IEnumerator SetSkyboxInternal(int skyboxIndex)
    {
        if (_currentSkyboxMaterialOperationHandle.IsValid())
        {
            Addressables.Release(_currentSkyboxMaterialOperationHandle);
        }

        var skyboxMaterialReference = _skyboxMaterials[skyboxIndex];
        _currentSkyboxMaterialOperationHandle = skyboxMaterialReference.LoadAssetAsync();
        yield return _currentSkyboxMaterialOperationHandle;
        RenderSettings.skybox = _currentSkyboxMaterialOperationHandle.Result;
    }
}

Hier passiert folgendes:

  • 7, (AssetReference) . , . . .
  • 13: , . ,
  • 18-20 , , , , . , API Addressables, , . — , , addressable-.
  • addressable 23, LoadAssetAsync, yield ( 25), . . !
  • , , , 26. Result, , .


Level 2 Asset Management (Unity Addressables) - AssetReference-Liste Beachten

Sie: Dieser Code ist nicht produktionsbereit. Verwenden Sie es nicht beim Programmieren eines Flugzeugs. Ich habe beschlossen, der Einfachheit halber die Zuverlässigkeit zu opfern.

Aber genug Erklärung. Es ist Zeit, ihn in Aktion zu sehen.

Bitte folgen Sie diesen Schritten:

  1. Bereiten Sie im Adressfenster den Inhalt vor ( Build-Player-Inhalt ).
  2. Erstellen Sie dann für die ausgewählte Plattform
  3. Führen Sie es aus und verbinden Sie den Profiler (Speicher) damit.
  4. Lassen Sie Ihren Kiefer nicht überrascht fallen.


Stufe 2 (Unity Addressables) - Erstellen Sie Player-Inhalte


Level 2 Memory Management (Unity Addressables) - Speicherprofiler

Sind die gekochten Assets nicht lecker?

Ich mag es, wenn der Profiler zufrieden ist. Und jetzt sehen wir den glücklichsten Profiler der Welt. Ein zufriedener Profiler bedeutet Folgendes: Erstens gibt es zufriedenere Spieler, die Ihr Spiel auch auf dem Nokia 3210 spielen können . Zweitens sind dies zufriedene Produzenten. Für Sie bedeutet dies, dass Ihr Geldbeutel zufrieden ist.

Dies ist die Leistung des Addressables-Systems.

Addressables verursachen jedoch geringe zusätzliche Arbeitskosten. Einerseits müssen Programmierer asynchrone Workflows unterstützen (dies kann mithilfe von Coroutine einfach implementiert werden). Darüber hinaus müssen Designer die Funktionen des Systems untersuchen, z. B. adressierbare Gruppen, und Erfahrungen sammeln, um fundierte Entscheidungen zu treffen. Und schließlich freut sich die IT-Abteilung sehr, dass Sie die Infrastruktur für die Übertragung von Assets über das Netzwerk konfigurieren müssen, wenn Sie diese lieber online hosten möchten.

Ich muss dir gratulieren. Ich werde erklären, was wir erreicht haben:

  • Richtige Speicherverwaltung.
  • Schnelleres Hochfahren.
  • Schnellere Installationszeit, reduzierte Anwendungsgröße im Store.
  • Erhöhte Gerätekompatibilität.
  • Asynchrone Architektur.
  • Sie öffneten die Tür für die Online-Speicherung dieser Inhalte → dh für die Trennung von Daten vom Code.

Ich wäre stolz auf solche Erfolge. Dies ist eine gute Rendite für unsere Arbeitsinvestitionen.

Oh, und vergessen Sie nicht, die Erfahrung mit Addressables in einem Interview zu erwähnen.

Unterstützende Materialien: Erstellen von Instanzen und Linkzählung. Informationen zu diesem Thema finden Sie in meinem Beitrag .

Optional: alternative Downloadstrategien. Sie können darüber in meinem Beitrag lesen .

Zusammenfassen:

  • Adressierbares Asset Management lässt sich bemerkenswert gut skalieren.
  • Adressable fügen asynchrones Verhalten hinzu
  • Vergiss nicht, den Inhalt auf Änderungen vorzubereiten, sonst hat das Spiel einen rosa Farbton!


Level 3 Asset Management (??) - Bereitstellung von Netzwerkinhalten

Level 3 Asset Management (??) - Bereitstellung von Netzwerkinhalten


Im vorherigen Abschnitt haben wir den wichtigsten Durchbruch erzielt. Verbessern Sie Ihre Fähigkeiten, indem Sie von einem herkömmlichen Asset-Management-System zu einem adressierbaren Workflow wechseln. Dies ist ein großer Sieg für das Projekt, da wir dank des geringen Zeitaufwands Platz für die Skalierung des Asset-Volumens bei gleichzeitig geringem Speicherverbrauch geschaffen haben. Dieser Erfolg hat dich tatsächlich auf Level 2 gebracht, Glückwunsch! Wir müssen jedoch noch eine andere Frage beantworten:

Ist das alles?

Nein . Wir haben das Thema Addressables kaum angesprochen. Dank dieses leistungsstarken Pakets gibt es andere Möglichkeiten, das Projekt zu verbessern.

Natürlich müssen Sie sich nicht alle Details der Verwendung von Addressables merken, aber ich empfehle Ihnen dringend, diese kurz zu lesen, da Sie in Zukunft höchstwahrscheinlich auf neue Tests stoßen werden und für eine eingehendere Untersuchung dankbar sein werden. Deshalb habe ich einen weiteren kurzen Leitfaden vorbereitet.

Daraus lernen Sie folgende Aspekte kennen:

  • Adressierfenster : Wichtige Details
  • Profilerstellung für adressierbare Dateien : Lassen Sie nicht zu, dass Speicherlecks Ihr Leben ruinieren
  • Netzwerkbereitstellung : Reduzierte Zeit von der Installation bis zum Gameplay
  • Montage Pipeline Integration
  • Praktische Strategien : Beschleunigung des Workflows, ohne zehnminütige Kaffeepausen

Und was noch wichtiger ist, wir werden die folgenden Fragen beantworten:

  • Was ist die versteckte Bedeutung von Send Profiler-Ereignissen ?
  • Wie nützlich ist die AddressableAssetSettings- API ?
  • Wie kann ich all dies in die BuildPlayerWindow- API integrieren ?
  • Was ist der Unterschied zwischen dem virtuellen Modus und dem gepackten Modus ?

Anleitung für Level 3 finden Sie in meinem Beitrag .

All Articles