我尝试使用没有thread.sleep的计时器来停止延迟,所以任何想法如何在没有thread.sleep的情况下制作这段代码但是它会停止20ms。感谢帮助! :)抱歉我的英语不好。
Timer BulletTimer = new Timer();
BulletTimer.Tick += (s, args) => BulletKillPlayer(Bullet);
BulletTimer.Interval = 20;
BulletTimer.Start();
private void BulletKillPlayer(Bullet)
{
bool pX, pY, pD1, pD2, nX, nY, nD1, nD2;
pX = false; pY = false; pD1 = false; pD2 = false; nX = false; nY = false;
for (int i = 1; i < 20; i++)
{
if (User.Range >= i)
{
Thread.Sleep(20);
foreach (MapItem MapItem in MapItem.Boxs.Values)
{
if (MapItem.X == Bullet.X && MapItem.Y == Bullet.Y + i && !pX) { pX = BreakBox(Bullet, MapItem); KillPlayer(Bullet, MapItem); }
if (MapItem.X == Bullet.X && MapItem.Y == Bullet.Y - i && !pY) { pY = BreakBox(Bullet, MapItem); KillPlayer(Bullet, MapItem); }
if (MapItem.X == Bullet.X + i && MapItem.Y == Bullet.Y && !nX) { nX = BreakBox(Bullet, MapItem); KillPlayer(Bullet, MapItem); }
if (MapItem.X == Bullet.X - i && MapItem.Y == Bullet.Y && !nY) { nY = BreakBox(Bullet, MapItem); KillPlayer(Bullet, MapItem); }
}
}
}
}