【发布时间】:2014-02-09 22:23:03
【问题描述】:
我正在使用 C# 和 XNA 构建突破的基本克隆。除了尝试创建块并将其绘制到屏幕上之外,所有代码似乎都运行良好。
在 LoadContent() 方法中,我使用了一个 for 循环,尝试将 10 个矩形添加到矩形列表(仅用于测试),并更改 X 和 Y 值。
int xChange = 0;
int yChange = 0;
//loop iterates 10 times as a test
for (int i = 0; i == 10; i++)
{
rectList.Add(new Rectangle(100+xChange, 200+ yChange, 40, 80));
xChange += 100;
yChange += 50;
}
然后在 draw 方法中,我使用了一个 foreach 循环来绘制其中的每一个:
foreach (Rectangle rect in rectList)
{
spriteBatch.Draw(block, rect, Color.White);
}
当我运行这段代码时,什么都没有,我不知道为什么。完整代码可以在http://pastebin.com/TNbzgUqn找到。
编辑:通过手动添加一个矩形(不是在循环中),我得到了一个要绘制的矩形。这将范围缩小到将矩形添加到列表中的 for 循环。
//The code below draws, the code above does not
Rectangle test1 = new Rectangle(200, 200, 40, 80);
rectList.Add(test1);
【问题讨论】:
-
rectlist 在哪里声明?
-
如果我不得不猜测,您将这些矩形绘制到 spritebatch 中,但从未将批次绘制到屏幕上。这是一个疯狂的猜测。我没有看到特定的绘制调用,绘制 spritebatch。我所看到的只是 .End() 被调用。
-
显然 End() 至少从我在 MSDN 上看到的内容来看是您所做的。也许您没有在批处理中正确设置选项以使其输出到您的屏幕。或者,也许你正在画一些你看不到的东西。验证您的参数
-
@DeanKnight rectList 在类的基础中声明(以及其他有效的矩形和纹理),所以这不是问题。我检查了参数,它应该以可见的大小在屏幕上绘制。