2013-04-18 8 views
0

Je travaille actuellement sur la création d'un jeu de plateforme XNA 2D, et je me demande s'il est possible de dessiner une sorte de GUI statique sur le jeu? Ce que je veux dire ici, c'est que pendant que le jeu se met à jour et que les joueurs changent de position, l'interface graphique serait dessinée sur une sorte de couche statique (overlay?), Qui serait la taille de la fenêtre. De cette façon, le jeu ne devrait pas constamment mettre à jour la position de l'interface graphique et être ainsi un peu plus agréable à gérer.Dessiner une interface graphique dans XNA

Des idées?

Merci pour votre temps

+0

Dessinez simplement votre GUI comme vous le faites pour toutes les autres textures mais sur une position fixe et surtout sur tout autre dessin. –

Répondre

0

Ouais, vous pouvez simplement les dessiner avec SpriteBatch :)

//HudTexture is a transparent texture the size of the window/screen, with hud drawn onto it. 
SpriteBatch.Draw(HudTexture, Vector2.Zero, Color.White); 
//Let's say that it works well to draw your score at [100,100]. 
SpriteBatch.DrawString(HudFont, Points.ToString(), new Vector2(100,100), Color.White); 

si vous projetez de faire plus GUI (boutons, etc.), vous pouvez consulter cette réponse je l'ai écrit à un autre poste: XNA DrawString() draws only a partial string

Aussi; Pour les scores de dessin etc, j'ai expérimenté un peu de boxe/unboxing à cause de ToString. Pour cette raison, j'ai souvent eu un tableau de chaînes pour représenter le score:

String[] ScoreText = new String[100000]; //As big as your max score 

//In Initializing method: 
for (int i = 0; i < ScoreText.Length; i++) 
    ScoreText[i] = i.ToString(); 

//In draw: 
SpriteBatch.DrawString(HudFont, ScoreText[Points], new Vector2(100,100), Color.White); 
0

Bien sûr, vous pouvez tirer des sprites où vous le souhaitez en utilisant un SpriteBatch par exemple.

La façon dont vous gérez le système dépend de vous. Ne donnez simplement aucune matrice de transformation et les choses seront dessinées aux coordonnées que vous spécifiez. Vous finirez par dessiner votre niveau (qui serait compensé par une position de caméra par exemple), puis dessinez vos éléments GUI par-dessus, sans décalages.