В моей игре у меня есть класс Ai, который в основном является связанным списком всех ai в моей игре. этот же класс содержит текстуры по умолчанию для каждого ai, и все отдельные классы моего ai наследуют от этого класса, таким образом, все они могут наследовать текстуры по умолчанию, которые уже были загружены классом ai. Однако, похоже, у меня проблемы с этим. Моя игра никогда не загружает gui при запуске, и через отладку кажется, что в игре есть проблемы с текстурами, которые я передаю. Вы не можете загрузить одну текстуру и передать ту же самую текстуру для использования другого объекта?Xna - Объекты, имеющие одну и ту же текстуру
AI Класс:
class AIs
{
private GraphicsDevice graphics;
private ContentManager content;
private SpriteBatch spriteBatch;
private LinkedList<object> ais;
private LinkNode<object> current;
//Default Textures
private Texture2D robotTexture
// Default Color Datas
private Color[] robotColorData;
public AIs()
{
}
public void Load(ContentManager content, GraphicsDevice graphics, SpriteBatch spriteBatch)
{
this.spriteBatch = spriteBatch;
this.graphics = graphics;
this.content = content;
// Loading Default Textures
robotTexture = content.Load<Texture2D>("robot");
// Loading Default Color Data
robotColorData = new Color[robotTexture.Width * robotTexture.Height];
robotTexture.GetData(robotColorData);
}
public void Update()
{
current = ais.getHead();
while (current.getNext() != null)
{
if (current.getData() is Robot)
{
((Robot)current.getData()).Update();
}
}
}
public void Draw()
{
current = ais.getHead();
while (current.getNext() != null)
{
if (current.getData() is Robot)
{
((Robot)current.getData()).Draw();
}
}
}
public addRobot(float spawnX, float spawnY)
{
Robot temp = new Robot(spawnX, spawnY);
temp.Load(content, graphics, spriteBatch);
ais.add(temp);
}
public Texture2D getRobotTexture()
{
return robotTexture;
}
public Color[] getRobotColorData()
{
return robotColorData;
}
}
Robot Класс:
class Robot : AIs
{
private GraphicsDevice graphics;
private ContentManager content;
private SpriteBatch spriteBatch;
private Texture2D robotTexture;
private Color[] robotColorData;
private Rectangle robotRectangle;
private Vector2 robotPosition = Vector2.Zero;
public Robot(float spawnX, float spawnY)
{
robotPosition = new Vector2(spawnX, spawnY);
}
new public void Load(ContentManager content, GraphicsDevice graphics, SpriteBatch spriteBatch)
{
this.spriteBatch = spriteBatch;
this.graphics = graphics;
this.content = content;
robotTexture = getRobotTexture();
robotColorData = getRobotColorData();
}
new public void Update()
{
robotRectangle = new Rectangle((int)robotPosition.X, (int)robotPosition.Y, robotTexture.Width, robotTexture.Height);
}
new public void Draw()
{
spriteBatch.Draw(robotTexture, robotPosition, Color.White);
}
}
Да, одна и та же текстура может использоваться для нескольких объектов. Можете ли вы опубликовать код, относящийся к вашей проблеме? Это обеспечило бы более глубокое понимание, чтобы люди могли вам помочь. – jgallant
Я бы, но я немного волновался и какой код мне следует показывать. – user2375782
Я сделаю что-то близкое к нему, я думаю, я выложу это, когда закончу это. – user2375782