私はサバイバルゲームを作っていて、オブジェクトが画面外に出たときにオブジェクトを削除しようとしています。ここでは、コードは次のようになります。各ループのオブジェクトを削除する
Public Sub tmrEnemyMove_Tick(sender As Object, e As EventArgs) Handles tmrEnemyMove.Tick
Dim koopaAnimation As Boolean
For Each enemy As enemy In lstEnemy
enemy.enemy.Left = enemy.enemy.Left - 20
If enemy.enemy.Tag = "koopa" Then
enemy.enemy.Image = Image.FromFile(Application.StartupPath + "\Graphics\koopa" + Trim(Str(koopaPosition)) + ".png")
If koopaAnimation = False Then
If koopaPosition = 0 Then
koopaPosition = 1
Else
koopaPosition = 0
End If
End If
koopaAnimation = True
End If
If picMario.Left < enemy.enemy.Left AndAlso enemy.enemy.Left < picMario.Right Or picMario.Left < enemy.enemy.Right AndAlso enemy.enemy.Right < picMario.Right Then
If picMario.Top < enemy.enemy.Top AndAlso enemy.enemy.Top < picMario.Bottom Or picMario.Top < enemy.enemy.Bottom AndAlso enemy.enemy.Bottom < picMario.Bottom Then
'MsgBox("Collision")
End If
End If
If enemy.enemy.Left < 0 Then
lstEnemy.Remove(enemy)
Me.Controls.Remove(enemy.enemy)
End If
Next
End Sub
私が手にエラーがある:「System.InvalidOperationException」種類の 未処理の例外がmscorlib.dllが で発生しました追加情報:コレクションが変更されました。列挙操作が実行されないことがあります。
誰でも助けてくれれば幸いです。
をあなたがそれについて考えるならば、明白な理由があります。ループ中にオブジェクトへの参照を取得し、その後に削除する – DavidB