c# – Gesture FreeDrag性能

我有一个简单的问题,我正试图为
Windows Phone制作一个巨大的游戏,但我仍然有一个重要的瓶颈/问题/糟糕的表现.

我已经使用了芒果分析器,但我没有看到任何问题,事实上它在我的手机上只使用了10%的CPU.

让我告诉你这个问题.

这是我的更新

protected override void Update(GameTime gameTime)
    {
        if (TouchPanel.IsGestureAvailable)
        {
            var gs = TouchPanel.ReadGesture();
            switch (gs.GestureType)
            {
                case GestureType.FreeDrag:
                    Position += gs.Delta;
                    break;
            }
        }
        base.Update(gameTime);
    }

这是我的Draw,其中map是20×15 Texture2D

protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        spriteBatch.Begin();          
        spriteBatch.Draw(map, Position, null, Color.Red, 0f, Vector2.Zero, 1f, SpriteEffects.None, 1f);
        spriteBatch.End();

        base.Draw(gameTime);
    }

问题是,对于UPDATE或者有点而言,DRAW太慢了.

例如:

1)我将屏幕拖到右边,非常慢 – >地图纹理正确地在右侧移动

2)我拖动屏幕右侧,然后左侧,非常快 – >地图纹理在右侧正确移动,但在左侧移动时有一点滞后,就像它仍然在右侧移动一样.

3)我将屏幕循环拖动,在1秒内制作一个圆圈 – >好吧,地图需要3秒才能循环移动..

我做错了什么?

我应该给你看一个youtube视频吗?

非常感谢你!!
卢卡

最佳答案 固定!

这太蠢了..

我们可能会在抽奖前的同一时间内多次触摸,因此我们必须将WHILE而不是IF

if (TouchPanel.IsGestureAvailable)

那就是

while (TouchPanel.IsGestureAvailable)

现在它就像一个魅力!!!

我希望这对那些可能遇到同样问题的人有所帮助

点赞