我希望程序要做的是在.txt文件中出现一个点的每个点绘制图形地面,但每次运行它时,它都不会绘制精灵?
这是代码.....
using (StreamReader sr = new StreamReader("trainingLevel.txt"))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] elements = line.Split(',');
foreach (string e in elements)
{
int id = int.Parse(e);
if (id == 1)
{
CreatePlatform(x, y);
}
x += widthPlatform;
}
y += heightPlatform;
x = 0;
}
}
public void CreatePlatform(int x, int y)
{
groundSprite = new Sprite();
groundSprite.Position = new Vector2(x, y);
groundSprite.Load("Ground", Content, simulator);
groundSprite.IsStatic = true;
groundSprite.Geom.OnCollision += OnCollision;
}
protected override void Draw(GameTime gameTime) {
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
List<Sprite> updateDraw = new List<Sprite>();
foreach (Sprite z in updateDraw) {
simulator.Update(gameTime.ElapsedGameTime.Milliseconds * .001f);
z.Update(gameTime);
spriteBatch.Draw(z.CurrentTexture, z.Position, null, Color.White, z.Rotation, z.Origin, 1, SpriteEffects.None, 1);
}
spriteBatch.End();
base.Update(gameTime);
base.Draw(gameTime);
}
答案 0 :(得分:4)
问题在于:
List<Sprite> updateDraw = new List<Sprite>();
当然, updateDraw
将包含零元素。
foreach (Sprite z in updateDraw)
然后绝对不会做任何事情。
我完全不确定你在那里尝试做什么,所以你需要弄清楚然后解决它。
答案 1 :(得分:1)
你的foreach循环是枚举一个空列表 - 你可能想让updateDraw成为该类的一个成员,并在场景进行时从中添加/删除项目,而不是在每次绘制时重新创建它。
答案 2 :(得分:1)
所以,你正在创建一个新的空的Sprite列表,遍历这个空列表并绘制其中所有[不存在的]对象,但屏幕上什么也没有出现?
也许你应该尝试给它画一些东西。
编辑:看起来我被打败了;)