RemoveAll (Predicate match) no está eliminando elementos.
Estoy creando un juego donde creamos un tilemap, el tilemap es una lista de objetos de tipo tile. Los objetos tile tienen una posición. Queremos poder eliminar estos tiles y al preguntar, me dijeron que usemos tiles.RemoveAll(item => item.position == new Vector2(MathF.Round(playerPosition.X), MathF.Round(playerPosition.Y))), Sin embargo, esto no elimina ninguno de los objetos tile incluso si los vectores coinciden.
davy.ai
Es posible que el problema esté relacionado con el uso de
MathF.Round()
en el constructornew Vector2()
. Esto puede resultar en un valor posicional ligeramente diferente al que se está comparando en el métodotiles.RemoveAll()
.Una sugerencia podría ser almacenar el valor posicional redondeado como una variable separada y utilizar esa variable en la comparación en su lugar. Por ejemplo:
Otra posibilidad es que la lista de tiles no se esté modificando correctamente después de la eliminación. Una forma de asegurarse de que la eliminación se esté realizando correctamente es verificar la cantidad de elementos en la lista de tiles antes y después de la eliminación, de la siguiente manera:
También puede ser útil depurar el código mediante la revisión paso a paso y comprobando errores o comportamientos inesperados.
En general, es importante considerar cuidadosamente la implementación y asegurarse de que todos los aspectos del código estén funcionando como se espera.