手势FreeDrag性能
问题描述:
我有一个简单的问题,我想为Windows Phone制作一个巨大的游戏,但我仍然有一个重要的瓶颈/问题/糟糕的表现。手势FreeDrag性能
我已经使用了芒果轮廓仪,但我没有看到任何问题,事实上,它只使用了我手机上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);
}
这是我的绘制,其中地图是一个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或还挺的。
例如:
1)I在屏幕上拖动的权利,非常缓慢 - >的地图纹理被正确地移动在右侧
2)I在屏幕上拖动的权利,则上左侧,相当快 - >地图纹理在右侧正确移动,但在左侧移动时有点滞后,就像它仍然在右侧移动一样..
3)我拖动屏幕循环制作在1秒内循环 - >好了,地图需要3秒钟循环移动..
我做错了什么?
我应该向你展示一个YouTube视频吗?
非常感谢你! Luca
答
固定!
这真是太笨..
可能发生,我们在抽签前的同一时间的多点触摸,所以我们必须把时间,而不是如果
if (TouchPanel.IsGestureAvailable)
则将
while (TouchPanel.IsGestureAvailable)
现在它就像一个魅力!
我希望这会对可能有同样问题的人有帮助