Une extension du Monogame content pipeline pour charger les spritesheets générées par Free Texture Packer dans Monogame
Lire dans une autre langue : English, Français
Projet d'exemple
Prérequis
Installation
Utiliser Free Texture Packer pour créer une spritesheet
Ajout de l'extension au content pipeline
Chargement de la spritesheet dans un projet monogame
Contribution
Versioning
Auteurs
License
Remerciements
Vous devez avoir Monogame instalé
Pour cet exemple, j'utilise Monogame 3.8.1.303
Vous devez aussi avoir Free Texture Packer instalé
Pour cet exemple, j'utilise Free Texture Packer 0.6.7
Il vous faut deux paquets nuget : FreeTexturePackerReader
et FreeTexturePackerPipeline
dotnet add package FreeTexturePackerReader --version 1.0.0
dotnet add package FreeTexturePackerPipeline --version 1.0.0
-
Ouvrez Free Texture Packer
-
Ajouter les images contnus dans le dossier
images
-
Nommez la texture
chess
-
Selectionner le format
png
-
Cochez la case
Remove file ext
-
Choisissez le format
custom
-
Cliquez sur le crayon juste à côté
-
Coller ce template d'export:
{ "name":"{{{config.imageName}}}", "texture":"{{{config.imageName}}}.png", "frames":[ {{#rects}} { "filename":"{{{name}}}", "frame":{ "X":{{frame.x}}, "Y":{{frame.y}}, "Width":{{frame.w}}, "Height":{{frame.h}} }, "rotated":{{rotated}}, "trimmed":{{trimmed}}, "spriteSourceSize":{ "X":{{spriteSourceSize.x}}, "Y":{{spriteSourceSize.y}}, "Width":{{spriteSourceSize.w}}, "Height":{{spriteSourceSize.h}} }, "sourceSize":{ "Width":{{sourceSize.w}}, "Height":{{sourceSize.h}} }, "pivot":{ "X":0.5, "Y":0.5 } }{{^last}},{{/last}} {{/rects}} ], "meta":{ "app":"{{{appInfo.url}}}", "version":"{{{appInfo.version}}}", "image":"{{{config.imageName}}}", "format":"{{{config.format}}}", "size":{ "Width":{{config.imageWidth}}, "Height":{{config.imageHeight}} }, "scale":{{config.scale}} } }
-
Cochez la case
Allow trim
etAllow rotation
-
Ecrivez
spritesheet
comme extension -
Cliquez sur
Save
-
Cliquez sur
Export
-
Choisissez un dossier et cliquez sur
Select Folder
- Créez un projet Monogame pour desktop
- Ajouter l'extension du pipeline dans votre projet (voir Installation)
- Ouvrez
Content.mgcb
- Cliquez sur
Content
- Sous
Properties
, défilez jusqu'àReference
et cliquez dessus - Cliquez
Add
- Selectionner le fichier .dll correspondant à l'extension
Vous le trouverez à la racine de votre projet dans le dossier
\bin\Debug\net6.0\FreeTexturePackerPipeline.dll
- Cliquez sur
Ok
-
Copiez les fichiers quevous venez d'exporter :
chess.png
etchess.spritesheet
(voir Utiliser Free Texture Packer pour créer une spritesheet) dans le dossier Content de votre projet -
Click droit sur
Content
puisAdd
>Existing Item...
-
Selectionnez
chess.spritesheet
puis cliquez surOpen
-
Allez à
Build
>Build
ou appuyez sur la toucheF6
-
Ouvrez votre fichier
Game1.cs
et ajouter ceci tout en hautusing FreeTexturePackerReader;
-
Charger la spritesheet
Dans la méthodeLoadContent
ajoutez:chess = Content.Load<SpriteSheet>("chess");
-
Afficher une spriteà l'écran
Dans la méthodeDraw
ajoutez:_spriteBatch.Begin(); var sprite = chess.frames["reine_blanc"]; _spriteBatch.Draw(chess.Texture,new Vector2(100,100),sprite.sourceRect,Color.White,sprite.rotation,sprite.origin,1,SpriteEffects.None,1); _spriteBatch.End();
-
Lancer le jeu
Vous trouverez le projet d'exemple dans ledossier SampleGame
Veuillez lire CODE_DE_CONDUITE.md pour des détails sur notre code de conduite et le processus pour nous soumettre des pull request
Nous utilisons SemVer pour le versionning.
- Sesso Kosga - Travail initial - sessokosga
Ce projet est publié sous la licence MIT - voir licence.md pour plus de détails
Mes remerciements vont à :
- Ragath pour m'avoir suggéré d'implémenter la librairie que j'avais faite en cette extension du Monogame content pipeline
Vous m'avez fait découvrir un aspect du framework monogame que je ne conaissais pas - Matt Weber Pour son tutoriel sur l'extension du content pipeline : How to extend Monogame's content pipeline
Votre tutoriel m'a permis d'approfondir ma connaissance du content pipeline - RB Whitaker's Wiki pour son tutoriel sur la création d'une extension pour le content pipeline : Building a content pipeline extension
Votre tutoriel m'a aidé à resoudre un bug qui me causais des mauts de têtes