@Isaarh wrote:
Hi,
First of all thank you for stopping by and taking a look at my issue. I'm new to MonoGame and I have a hard time with this NullReferenceException, I have 3 files currently, Core, World and Sprite. My issue come from the third one at line 30 where I initialize my Texture2D. Here is my code:
Core.cs
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; namespace rpg { public class Core : Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; World world; public Core() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; IsMouseVisible = true; } protected override void Initialize() { // TODO: Add your initialization logic here world = new World(); base.Initialize(); } protected override void LoadContent() { Globals.content = this.Content; Globals.spriteBatch = new SpriteBatch(GraphicsDevice); // TODO: use this.Content to load your game content here } protected override void Update(GameTime gameTime) { if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) Exit(); // TODO: Add your update logic here world.Update(); base.Update(gameTime); } protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here Globals.spriteBatch.Begin(); world.Draw(); Globals.spriteBatch.End(); base.Draw(gameTime); } } }
World.cs
using System; using System.Collections.Generic; using System.Text; namespace rpg { class World { Sprite sprite; public World() { sprite = new Sprite("Graphics/Sprites/player", 0, 0, 16, 25, 1, 0f); } public virtual void Update() { } public virtual void Draw() { sprite.Draw(); } } }
Sprite.cs
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; namespace rpg { /// <summary> /// Draw a sprite on the world /// </summary> class Sprite { string path; Texture2D texture; int posX, posY, width, height; float scale; Rectangle position; Vector2 origin; Color color; SpriteEffects spriteEffects; float layer; public Sprite(string cPath, int cPosX, int cPosY, int cWidth, int cHeight, float cScale, float cLayer) { // Initialize the sprite texture path = cPath; texture = Globals.content.Load<Texture2D>(path); // <= NullReferenceException // Initialize the sprite position and scale posX = cPosX; posY = cPosY; width = cWidth * (int)cScale; height = cHeight * (int)cScale; position = new Rectangle(posX, posY, width, height); // Set the origin to the middle of the sprite origin = new Vector2(texture.Bounds.Width / 2, texture.Bounds.Height / 2); color = Color.White; spriteEffects = new SpriteEffects(); layer = cLayer; } public virtual void Draw() { if(texture != null) { Globals.spriteBatch.Draw(texture, position, null, color, 0f, origin, spriteEffects, layer); } } } }
I have my image player in "/Graphics/Sprites/" and when I initialize and draw my sprite in Core.cs it works just fine.
Thank you !
Posts: 1
Participants: 1