2016-08-23 1 views
0

Donc, ceci est ma première application et je suis coincé et pendant presque une semaine, je ne trouve pas de solution. J'ai créé beaucoup d'animations pour différents personnages et découvert que l'utilisation de la mémoire de mon jeu est d'environ 200 mb. Avant je ne m'inquiétais pas pour ça car, comme beaucoup de débutants je pensais qu'après avoir compressé mes textures png cette taille diminuera aussi. Mais cela ne s'est pas produit. J'ai donc commencé à chercher ce que je pouvais faire à ce sujet et j'ai découvert que changer le format de la texture par défaut de RGBA8888 à RGBA4444 peut réduire l'utilisation de la mémoire de près de moitié.Comment changer le format de texture en RGBA4444 pour Sprite Atlas créé dans assets.xassets

J'ai trouvé une réponse Sprite Kit Texture Atlas: Define Image Format (RGBA4444, RGB565, …) où il est dit que vous pouvez changer le format de sortie à partir du format Paramètres de construction> Atlas des textures de sortie. Mais cela ne fonctionne pas pour moi, car mes Atlas sont créés dans le dossier assets.xassets. Les paramètres "Build Settings> Output Texture Atlas Format" sont disponibles uniquement lorsque vous créez un atlas dans le dossier du projet et non dans le dossier assets.xassets. Donc, l'étape suivante consistait à changer le format des textures manuellement dans le TexturePacker. Et je l'ai fait, mais le problème est quand j'ai ajouté ces nouvelles textures dans le dossier assets.xassets, même si leur qualité est faible, mais elles ont toujours la même utilisation de la mémoire que les textures au format RGBA8888. J'ai lu beaucoup de ressources, mais je n'ai trouvé aucune information sur la façon de changer le format Atlas de texture de sortie si Sprite Atlas est dans le dossier assets.xassets. Donc, à ce stade, je ne sais pas quoi faire, et ma question est - Comment puis-je changer le format de texture à RGBA4444 pour mes atlas Sprite dans le dossier assets.xassets? Merci d'avance.

Répondre

0

Lors de mes tests avec SpriteKit, j'ai trouvé que toutes les textures étaient chargées en mémoire au format RGBA8888 (ce qui signifie 32BPP). L'empaquetage de texture peut stocker les données sur le disque en tant que 4 bits par composant, mais cela n'aura aucune importance au moment de l'exécution lorsqu'il est chargé en mémoire à 8 bits par composant. Si vous êtes intéressé par un moyen de réduire l'utilisation de la mémoire d'exécution, consultez: this SO answer pour plus d'informations sur un shader de réduction de mémoire pour SpriteKit.