Мне нужно создать маркеры в XNA, C #, но ошибка в классе Bullets говорит мне, что «текстура» не имеет значения

#c# #xna

#c# #xna

Вопрос:

 public class Bullet
    {
        public Rectangle boundingBox;
        public Texture2D texture;
        public Vector2 origin;
        public Vector2 position;
        public bool isVisible;
        public float speed;

        public Bullet (Texture2D newTexture)
        {
            speed = 10;
            texture = newTexture;
            isVisible = false;
        }
        public void Draw(SpriteBatch spritebatch)
        {
            spritebatch.Draw(texture, position, Color.White);
        }
    }

public class ClasePersonaje : Microsoft.Xna.Framework.Game
    {
        public Texture2D PersonajePrincipalClase { get; set; }
        public int Filas { get; set; }
        public int Columnas { get; set; }
        public int marcoMax { get; set; }
        public int marcoMin { get; set; }
        public int marcoActual { get; set; }
        private int marcosTotales;
        private double contadorFrames;
        public static int posPersonajePrincipalX = 30;
        public static int posPersonajePrincipalY = 30;

        public Texture2D bulletTexture;
        public float bulletDelay;
        public List<Bullet> bulletList;

        public ClasePersonaje(Texture2D texturaPersonajePrincipal, int filas, int columnas)
        {
            PersonajePrincipalClase = texturaPersonajePrincipal;
            Filas = filas;
            Columnas = columnas;
            marcoActual = marcoMin;
            marcosTotales = filas * columnas;

            bulletList = new List<Bullet>();
            bulletDelay = 20;
        }
        public void Draw(SpriteBatch spriteBatch, Vector2 location, float size)
        {
            int ancho = PersonajePrincipalClase.Width / Columnas;
            int altura = PersonajePrincipalClase.Height / Filas;
            int fila = (int)((float)marcoActual / (float)Columnas);
            int columna = marcoActual % Columnas;

            Rectangle rectanguloOrigen = new Rectangle(ancho * columna, altura * fila, ancho, altura);
            Rectangle rectanguloDestino = new Rectangle((int)location.X, (int)location.Y, (int)(ancho * size), (int)(altura * size));

            spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null);
            spriteBatch.Draw(PersonajePrincipalClase, rectanguloDestino, rectanguloOrigen, Color.White);
            spriteBatch.End();

            foreach (Bullet b in bulletList)
            {
                b.Draw(spriteBatch);
            }
        }
        public void Update()
        {
            if (Game1.disparo)
            {
                Shoot();
            }
            UpdateBullets();
            if (contadorFrames >= 100)
            {
                if (marcoActual < marcoMin || marcoMax <= marcoActual)
                {
                    marcoActual = marcoMin;
                }
                else
                {
                    marcoActual  ;
                }
                if (Game1.derPersonaje)
                {
                    if (Game1.derDisparo)
                    {
                        marcoMin = 0;
                        marcoMax = 3;
                    }
                    else if (Game1.izqDisparo)
                    {
                        marcoMin = 4;
                        marcoMax = 7;
                    }
                    else if (Game1.arDisparo)
                    {
                        marcoMin = 8;
                        marcoMax = 11;
                    }
                    else if (Game1.abDisparo)
                    {
                        marcoMin = 12;
                        marcoMax = 15;
                    }
                    if (!Game1.arDisparo amp;amp; !Game1.abDisparo amp;amp; !Game1.derDisparo amp;amp; !Game1.izqDisparo)
                    {
                        marcoMin = 0;
                        marcoMax = 3;
                    }
                    posPersonajePrincipalX  = 10;
                }
                else if (Game1.izqPersonaje)
                {
                    if (Game1.derDisparo)
                    {
                        marcoMin = 0;
                        marcoMax = 3;
                    }
                    else if (Game1.izqDisparo)
                    {
                        marcoMin = 4;
                        marcoMax = 7;
                    }
                    else if (Game1.arDisparo)
                    {
                        marcoMin = 8;
                        marcoMax = 11;
                    }
                    else if (Game1.abDisparo)
                    {
                        marcoMin = 12;
                        marcoMax = 15;
                    }
                    if (!Game1.arDisparo amp;amp; !Game1.abDisparo amp;amp; !Game1.derDisparo amp;amp; !Game1.izqDisparo)
                    {
                        marcoMin = 4;
                        marcoMax = 7;
                    }
                    posPersonajePrincipalX -= 10;
                }
                else if (Game1.arPersonaje)
                {
                    if (Game1.derDisparo)
                    {
                        marcoMin = 0;
                        marcoMax = 3;
                    }
                    else if (Game1.izqDisparo)
                    {
                        marcoMin = 4;
                        marcoMax = 7;
                    }
                    else if (Game1.arDisparo)
                    {
                        marcoMin = 8;
                        marcoMax = 11;
                    }
                    else if (Game1.abDisparo)
                    {
                        marcoMin = 12;
                        marcoMax = 15;
                    }
                    if (!Game1.arDisparo amp;amp; !Game1.abDisparo amp;amp; !Game1.derDisparo amp;amp; !Game1.izqDisparo)
                    {
                        marcoMin = 8;
                        marcoMax = 11;
                    }
                    posPersonajePrincipalY -= 10;
                }
                else if (Game1.abPersonaje)
                {
                    if (Game1.derDisparo)
                    {
                        marcoMin = 0;
                        marcoMax = 3;
                    }
                    else if (Game1.izqDisparo)
                    {
                        marcoMin = 4;
                        marcoMax = 7;
                    }
                    else if (Game1.arDisparo)
                    {
                        marcoMin = 8;
                        marcoMax = 11;
                    }
                    else if (Game1.abDisparo)
                    {
                        marcoMin = 12;
                        marcoMax = 15;
                    }
                    if (!Game1.arDisparo amp;amp; !Game1.abDisparo amp;amp; !Game1.derDisparo amp;amp; !Game1.izqDisparo)
                    {
                        marcoMin = 12;
                        marcoMax = 15;
                    }
                    posPersonajePrincipalY  = 10;
                }
                if (!Game1.abPersonaje amp;amp; !Game1.arPersonaje amp;amp; !Game1.derPersonaje amp;amp; !Game1.izqPersonaje)
                {
                    marcoActual = 12;
                } 
                contadorFrames = 0;
            }
            else
            {
                contadorFrames  = Game1.ElapsedTime;
            }
        }
        public void Shoot()
        {
            if (bulletDelay >= 0)
            {
                bulletDelay--;
            }
            if (bulletDelay <= 0)
            {
                Bullet b = new Bullet(bulletTexture);
                b.position = new Vector2(posPersonajePrincipalX, posPersonajePrincipalY);
                b.isVisible = true;
                if (bulletList.Count() < 20)
                {
                    bulletList.Add(b);
                }
            }
            if (bulletDelay == 0)
            {
                bulletDelay = 20;
            }
        }
        public void UpdateBullets()
        {
            foreach (Bullet b in bulletList)
            {
                b.position.Y -= 10;
                if(b.position.Y <= 0)
                {
                    b.isVisible = false;
                }
            }
            for (int i = 0; i < bulletList.Count(); i  )
            {
                if(!bulletList[i].isVisible)
                {
                    bulletList.RemoveAt(i);
                    i--;
                }
            }
        }
    }
  

Ошибка в текстуре внутри метода Draw класса Bullet (там говорится, что оно равно null). Я пытался решить это в течение 5 дней, и я все еще не мог найти решение. И я знаю, что это не так сложно, но я новичок в программировании и XNA (я начал это делать в марте).

Комментарии:

1. Вам нужно загрузить текстуру в ClasePersonaje.bulletTexture . Как бы то ни было, ни одна текстура никогда не загружается и, следовательно, не передается в Bullet класс.

2. public void LoadContent(ContentManager Content) { bulletTexture = Content.Load<Texture2D>(«playerbullet»); // Нет, это все еще не работает }