我有一个简单的问题,我正试图为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是20x15 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视频吗?
非常感谢你! 卢卡
答案 0 :(得分:2)
固定!
这太愚蠢了..
我们可能会在抽奖前的同一时间内进行多次触摸,因此我们必须在上面放置一个WHILE而不是IF
if (TouchPanel.IsGestureAvailable)
那么它将是
while (TouchPanel.IsGestureAvailable)
现在它就像一个魅力!!!
我希望这对有可能遇到同样问题的人有所帮助