Load/Unload-Assets dynamisch
ich manage mein RAM so wollen, zu laden/entladen alle meine ngui Seiten on the fly. Für die, die ich erstellt habe AssetBundle mit prefabs und ich werde immer diese AssetBundles in meinem apk
Was ist der Weg zum laden/entladen Sie Sie auf Android-Gerät.
Ich in etwa weiß, über AssetBundle.CreateFromMemory, aber nicht in der Lage, es zu implementieren
Ich bin am überlegen in der rechten Weise oder etwas fehlt .
jede Hilfe/??
InformationsquelleAutor chetan rane | 2013-02-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, Sie sind auf dem richtigen Weg. Unity unterstützt Ressourcen-Ordner in das Projekt, mit dem die Inhalte geliefert werden, die in den wichtigsten Spiel-Datei noch nicht geladen werden, bis Sie angefordert werden. In Unity Pro, Unity iOS Pro(die ehemals als "iOS Advanced') und Unity Android Pro(die ehemals als "Android Erweitert'), Sie können auch Asset-Bundles. Diese sind Dateien, die völlig getrennt von der Haupt-Spiel-Datei, die enthalten Elemente, auf die zugegriffen werden durch das Spiel auf Abruf aus einer Datei oder URL.
Einer
Asset Bundle
ist eine externe Sammlung von Vermögenswerten. Sie können viele Asset Bundles und daher viele verschiedene externe Kollektionen von assets. Diese Dateien befinden sich außerhalb der integrierten Einheit Spieler, in der Regel sitzen auf einem web-server für end-Nutzer Zugriff auf dynamisch.Aufbau eines Asset-Bundle, rufen Sie
BuildPipeline.BuildAssetBundle()
in einer Editor-Schrift. Die Argumente, die Sie angeben, wird ein array von Objekten aufgenommen werden, die in der integrierten Datei, zusammen mit einigen anderen Optionen. Dies wird die Datei, die Sie später geladen werden dynamisch in der Laufzeit durch die VerwendungAssetBundle.Load()
.Können Sie entladen Ressourcen eines AssetBundle durch den Aufruf
AssetBundle.Unload()
. Wenn Sie true übergeben, die für die unloadAllLoadedObjects parameter, sowohl die Objekte gehalten, die intern vonAssetBundle
sind, und diejenigen, die zuvor von der AssetBundle mitAssetBundle.Load()
werden vernichtet und der Speicherbedarf durch das bundle wird veröffentlicht.Manchmal können Sie es vorziehen, laden Sie eine AssetBundle, instanziieren Sie die gewünschten Objekte und Freigabe des verwendeten Speichers durch das Bündel, während die Objekte herum. Der Vorteil ist, dass Sie kostenlos bis Speicher für andere Aufgaben, wie zum Beispiel beim laden einer anderen AssetBundle. In diesem Szenario würde man false als parameter. Nachdem das bundle ist zerstört, Sie werden nicht in der Lage, Objekte laden.
Wenn Sie wollen zerstören, Szene-Objekte geladen
Resources.Load()
vor der Belastung eine andere Ebene, nennenObject.Destroy()
auf Sie. Zur Freigabe von Vermögenswerten, die VerwendungResources.UnloadUnusedAssets()
.Lesen Sie die ganze Geschichte in Unity docs.
Bei der Installation einer APK installieren möchten, können Sie alle Arten von bundles. Das bedeutet nicht, dass diese bundles geladen werden, auf jede Szene. Daher sparst du RAM, da die bundles nicht zugegriffen wenn Sie nicht benötigt wird.
das bedeutet, dass ich explizit laden alle Vermögenswerte Gerät richtig? aber was ist, wenn die app ist hochgeladen im store ? sorry, wenn diese q ' s albern, aber ich m ein Neuling und habe wirklich stecken in dieser
Ich habe einige Erfahrung damit, aber ich weiß nicht, alle von ihm auch nicht. Ich bin nur Annahmen auf Basis von dem, was ich gelesen habe. Die Art, wie ich es sehe, ist die APK (die Sie download aus dem store) können riesig sein. Das würde bedeutet, dass die mobile ROM bekommen würde, gefüllt. Aber beim starten der Anwendung, nur die assets, die SIE auswählen, werden geladen. Also, das Gerät ist RAM nicht gefüllt werden, dass viel. Vorausgesetzt, Sie wissen, Wann Sie zu laden/entladen Sie die richtigen Pakete und stellen Sie sicher, dass Sie nicht undicht überall, natürlich.
InformationsquelleAutor Joetjah