Chargement/Déchargement des Actifs de façon dynamique
je dois gérer ma RAM donc voulez charger/décharger toute ma ngui les pages à la volée. Pour ce que j'ai créé AssetBundle avec préfabriqués et je vais gardé ces AssetBundles dans mon apk
Qu'est-ce que la façon de charger/décharger sur adroid appareil.
Environ, je sais à propos de AssetBundle.CreateFromMemory, mais incapable de le mettre en œuvre
Je pense dans le droit chemin ou manque quelque chose .
toute aide/??
OriginalL'auteur chetan rane | 2013-02-25
Vous devez vous connecter pour publier un commentaire.
Je pense que vous êtes dans le droit chemin. Unity prend en charge les Dossiers de Ressources dans le projet pour permettre au contenu d'être fournie dans le jeu principal fichier encore de ne pas être chargé qu'à la demande. Dans Unity Pro, Unity Pro iOS(anciennement appelée "iOS Advanced') et de l'Unité Android Pro(anciennement appelée "Android Avancé"), vous pouvez également créer des Actifs de Faisceaux. Ces fichiers sont complètement séparée de la partie principale de fichiers qui contiennent des actifs à être accessible par le jeu à la demande à partir d'un fichier ou d'une URL.
Un
Asset Bundle
est une collection d'actifs. Vous pouvez avoir de nombreux Actifs Faisceaux et, par conséquent, de nombreux externes différentes collections d'actifs. Ces fichiers existent en dehors de la construction de l'Unité joueur, généralement assis sur un serveur web pour que les utilisateurs finaux à accéder dynamiquement.De construire un Atout Bundle, vous appelez
BuildPipeline.BuildAssetBundle()
à l'intérieur d'un Éditeur de script. Dans les arguments, vous spécifiez un tableau d'Objets à inclure dans le haut du fichier, ainsi que quelques autres options. Cela va créer un fichier que vous pouvez ensuite charger dynamiquement à l'exécution en utilisantAssetBundle.Load()
.Vous pouvez décharger les ressources d'un AssetBundle en appelant
AssetBundle.Unload()
. Si vous passez true pour le unloadAllLoadedObjects paramètre, les objets tenus en interne par leAssetBundle
et ceux qui sont chargés de la AssetBundle à l'aide deAssetBundle.Load()
seront détruits et la mémoire utilisée par le bundle sera libéré.Parfois, vous préférez peut-être charger un AssetBundle, instancier les objets désirés et de libérer la mémoire utilisée par le faisceau, tout en conservant les objets. L'avantage est que vous libérer de la mémoire pour d'autres tâches, par exemple le chargement d'un autre AssetBundle. Dans ce cas, vous devriez passer à false au paramètre. Après le bundle est détruit, vous ne serez pas en mesure de charger des objets de plus.
Si vous voulez détruire scène des objets chargés à l'aide d'
Resources.Load()
avant le chargement d'un autre niveau, l'appelObject.Destroy()
sur eux. Pour la libération de l'actif, l'utilisationResources.UnloadUnusedAssets()
.Lire toute l'histoire dans L'unité docs.
Lors de l'installation de l'APK vous pouvez installer tous types de faisceaux. Cela ne signifie pas que ces bottes sont chargés sur chaque scène. Par conséquent, il vous permettra de gagner de la RAM car les paquets ne sont pas accessibles lorsqu'il n'est pas nécessaire.
cela signifie que je dois charger explicitement tous les actifs à l'appareil? mais que faire si l'application est téléchargée sur le store ? désolé si ces questions semble idiot, mais je suis un newbie et vraiment coincé dans ce
J'ai une certaine expérience en informatique, mais je ne connais pas tous non plus. Je suis juste de faire des hypothèses sur les bases de ce que j'ai lu. La façon dont je le vois, l'APK (que vous pouvez télécharger à partir du magasin) peut être énorme. Qui me signifie que le mobile ROM serait de se remplir. Mais lors du démarrage de l'application, seuls les actifs que VOUS sélectionnez sera chargé. Par conséquent, le dispositif de RAM ne seront pas remplis que beaucoup. À condition de savoir quand pour charger/décharger les paquets et assurez-vous que vous n'avez pas de fuite de n'importe où, bien sûr.
OriginalL'auteur Joetjah