帮助渲染精灵

时间:2010-02-16 00:14:04

标签: c# xna 2d sprite draw

我希望程序要做的是在.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);
}

3 个答案:

答案 0 :(得分:4)

问题在于:

List<Sprite> updateDraw = new List<Sprite>();
当然,

updateDraw将包含零元素。

foreach (Sprite z in updateDraw)

然后绝对不会做任何事情。

我完全不确定你在那里尝试做什么,所以你需要弄清楚然后解决它。

答案 1 :(得分:1)

你的foreach循环是枚举一个空列表 - 你可能想让updateDraw成为该类的一个成员,并在场景进行时从中添加/删除项目,而不是在每次绘制时重新创建它。

答案 2 :(得分:1)

所以,你正在创建一个新的空的Sprite列表,遍历这个空列表并绘制其中所有[不存在的]对象,但屏幕上什么也没有出现?

也许你应该尝试给它画一些东西。

编辑:看起来我被打败了;)