このエラー メッセージが表示される理由を数日間探していました。そして、これを解決するか、コードを改善するために助けが必要です。なぜこのエラーが発生するのかを理解し、その理由を見つけるのは困難です。なぜなら、このエラーが常に発生するわけではなく、時々発生するからです! しかし、リストとリスト内のアイテムの数に関係していると思います。エラー イベントが発生するのは、コードの 2 番目の部分です。また、削除したいオブジェクトを特別な「削除リスト」に追加しようとしましたが、これが機能しないのはなぜですか? 助けていただければ幸いです。ありがとう!
public void CollisionControlMissileHitAsteroid(ContentManager content)
{
for (int i = 0; i < missilesList.Count(); i++)
{
// Stora asteroider
for (int j = 0; j < asteroidsBigList.Count(); j++)
{
if (missilesList.ElementAt(i).Bounds().Intersects(asteroidsBigList.ElementAt(j).Bounds())) // Fel här ??
{
for(int x = 0; x < 2; x++)
AddNewSmallAsteroidToList(new AsteroidSmall(content, asteroidsBigList.ElementAt(j).Position));
missilesList.RemoveAt(i);
i--;
asteroidsBigList.RemoveAt(j);
j--;
}
}
if (missilesList.Count() > 0 && asteroidsSmallList.Count > 0)
{
for (int k = 0; k < asteroidsSmallList.Count(); k++)
{
if (missilesList.ElementAt(i).Bounds().Intersects(asteroidsSmallList.ElementAt(k).Bounds())) // THIS IS WHERE THE ERROR EVENT HAPPENS!
{
missilesList.RemoveAt(i);
i--;
asteroidsSmallList.RemoveAt(k);
k--;
}
}
}
}
}
編集:
ここに休憩を入れるべきですか?それはまだ起こるので聞いてください!それが起こるまで、私は5分間遊ぶことができます!
if (missilesList.Count() > 0 && asteroidsSmallList.Count() > 0)
{
for (int k = 0; k < asteroidsSmallList.Count(); k++)
{
if (missilesList.ElementAt(i).Bounds().Intersects(asteroidsSmallList.ElementAt(k).Bounds()))
{
missilesList.RemoveAt(i);
i--;
asteroidsSmallList.RemoveAt(k);
k--;
break; // ???????
}
}
}