我目前正在研究库存系统,但是我在弄清楚应该如何绘制它时遇到了问题。
我有一个看起来像这样的矩形数组:
Rectangle[] Inventoryslots = new Rectangle[24]; // 24 slots
现在我想绘制像6 * 4列,6个槽宽和4个槽高的槽。
我正在画它们,直到我弄清楚我应该如何在y上绘制它们:
for (int i = 0; i < Inventoryslots.Length; i++)
{
Inventoryslots[i] = new Rectangle(i * 33, 0, box.Width, box.Height);
spriteBatch.Draw(box, Inventoryslots[i], Color.White);
}
所以不知怎的,当[i]
达到6并且还重置x位置时我想要移动y33。
我确信这很简单,但我无法理解,所以任何帮助都会为我节省很多时间。
答案 0 :(得分:2)
首先创建一个多维数组和常量
const int offset = 100;
Rectangle[,] Inventoryslots = new Rectangle[6, 4];
然后你将使用双嵌套for循环
进行初始化for (int x = 0; x < 6; x++)
{
for (int y = 0; y < 4; y++)
{
Inventoryslots[x, y] = new Rectangle((x * Width) + offset,
(y * Height) + offset, Width, Height);
}
}
然后你会做一个双嵌套for循环来迭代它们
for (int x = 0; x < 6; x++)
{
for (int y = 0; y < 4; y++)
{
spritebatch.draw(texture, Inventoryslots[x, y], Color.White);
}
}
至少我认为这就是你要问的,让我知道这是如何工作的。常量可用于移动整个矩形数组(如果你想单独操作X和Y,则使用vector2)