Unity 3D: Asset-Bundles vs. Ressourcen-Ordner vs www.Texture
So, ich habe mich ein bisschen Lesen um die Foren über AssetBundles und der Ressourcen-Ordner in Unity 3D, und ich kann nicht herausfinden, die optimale Lösung für das problem bin ich konfrontiert. Hier ist das problem:
Ich habe ein Programm entwickelt für die eigenständige, , Lasten "Bücher" voll von .png-und .jpg-Bilder. Die Seiten sind im moment das gleiche jedes mal, wenn das Programm gestartet wird. Am Anfang der Szene für jedes "Buch", es laden alle diejenigen, die Bilder auf einmal mit www.texture und ein Weg. Merkte ich nun aber, dass dies möglicherweise eine nicht-performante Methode für den Zugriff auf Dinge, die zur Laufzeit-es ist langsam! Das heißt, der Benutzer kann nichts tun für 5-20 Sekunden, während die Szene beginnt und das Buch-Seite-Bilder laden (auf nicht-legendären Computer). ALSO, ich kann nicht herausfinden, welche der drei Dinge wäre der Schnellste:
1) Laden eines asset-bundle pro Buch (sagen wir 20 Texturen @ 1 mb).
2) Laden ein asset-bundle pro Seite (1 mb).
3) eine der ersten beiden Optionen, aber aus den Ressourcen geladen Ordner.
Welche wäre schneller, und warum? Ich verstehe, dass asset-bundles verpackt sind, die von Einheit, sondern bedeutet das, dass die Texturen im inneren wird vorverdichtet und einfacher auf Speicher beim laden? Nicht den Ordner Ressourcen, verursachen weniger Ladezeit? Was gibt? Wie ich es verstehe, ist der Ordner "resources" lädt in eine cache-aber es ist die gleiche cache -, dass die standalone-player verwendet normalerweise? Oder ist das extra, ungenutzten Raum? Ich denke, ein weiteres Problem ist, dass ich nicht sicher bin, was der Unterschied ist zwischen dem laden Sachen aus dem Speicher und speichert Sie im cache.
Cheers, Leute...
InformationsquelleAutor Catlard | 2013-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Ressource-Ordner sind Bestandteil der verwalteten Vermögen. Das bedeutet, dass Sie komprimiert werden, indem die Einheit, die folgenden Einstellungen, die Sie anwenden in der IDE. Sie sind daher effizient zur Laufzeit geladen. Sie können maßgeschneiderte die Komprimierung für jede Plattform, die weitere Optimierung der performance.
Wir machen teure Einsatz von Ressourcen.Load() zu ziehen Vermögen und führt es auch auf desktop und mobile.
Es gibt auch einen speziellen Ordner namens StreamingAssets, dass Sie verwenden können, um zu setzen, gebündelt un-verwalteten Vermögens. Dies ist, wo wir die videos, die wir spielen wollen, zur Laufzeit, aber nicht wollen, Einheit konvertieren Sie diese in den Standard ogg-codec. Auf Handy spielen in der nativen video-player. Sie können auch Bilder drin und der laden ist wie mit der WWW Klasse. Langsam, denn die Einheit muss zu bereinigen und komprimieren Sie die Bilder zur Ladezeit.
Be-WWW ist langsamer aufgrund der overhead-Verarbeitung, asset, wie oben erwähnt. Aber Sie können ziehen Sie die Daten von einem server oder von außerhalb der Anwendung "sandbox".
ath.
AssetBundles sind wie ein Ressourcen-Ordner laden Sie zur Laufzeit von außerhalb. Laden Sie ein bundle aus einer lokalen Quelle oder einem server. Sobald es geladen ist, können Sie den Zugriff auf Ihre Ressourcen sehr viel wie die, die gebündelt zur compile-Zeit innerhalb der Ressourcen-Ordner. AssetsBundles groß sind, reduzieren Sie die kompilierte Anwendung, Größe und laden von dynamischen Inhalten (wahrscheinlich von einem server) zur Laufzeit, um sicherzustellen, dass der Benutzer hat die neueste Vermögen.
InformationsquelleAutor Jerome Maurey-Delaunay
Super Antwort von Jerome über Ressourcen. Fügen Sie einige zusätzliche Infos für die zukünftige Suche in Bezug auf AssetBundles, hier sind zwei Szenarien:
Ihr Spiel ist zu groß
Haben Sie eine Tonne von Texturen, sagen Sie, und Ihre iOS-Spiel ist über 100 mb-also von Apple eine Warnung an die Nutzer und verhindern, dass Sie durch das herunterladen über das Mobilfunknetz. Ressourcen wird nicht helfen, denn alles in diesem Ordner wird zusammen mit der app.
Lösung: Verschieben Sie die Grafik, die Sie nicht unbedingt benötigen, auf first-run-in asset bundles. Bauen Sie die Bündel, laden Sie Sie auf einem server irgendwo, dann laden Sie zur Laufzeit benötigt. Jetzt ist Ihr Spiel viel kleiner und haben keine Furcht einflößende Warnhinweise.
Müssen Sie verschiedene Versionen von Bildmaterial für verschiedene Plattformen
Alternatives Szenario: Sie entwickeln für iPhone und iPad. Aus den gleichen Gründen wie oben, die Sie verkleinern Ihr Kunstwerk so viel wie möglich zu schlagen, die 100 mb-Grenze für das iPhone. Aber jetzt wird das Spiel sieht schrecklich aus auf dem iPad. Was tun?
Lösung: erstellen Sie eine asset-bundle mit zwei Varianten. Eine für Telefone mit low-res-Bildmaterial, und eine für tablets mit high-res Bildmaterial. In diesem Fall ist der asset-bundles versendet werden können mit dem Spiel oder an einen server gesendet. Bei der Laufzeit wählen Sie die richtige Variante und laden aus dem asset-bundle, immer die entsprechende Bildmaterial ohne if/else-überall.
Mit allen, dass gesagt wird, die asset-bundles sind mehr kompliziert zu bedienen, schlecht dokumentiert, und Unity demos funktionieren nicht richtig, manchmal. So ernsthaft bewerten, ob Sie Sie brauchen.
InformationsquelleAutor Alex Schearer