Añadir y quitar elementos de una lista en Unity

Siempre digo que los List son como Arrays o Matrices vitanimadas, ya que tienen implementados sus propios metodos lo que facilitar la labor a la hora de manejarlas.

En c# y Unity para poder utilizar los List tendremos que tener la librería

using System.Collections.Generic;

Depues podemos declarar nuestra lista del tipo que queramos , normalmente usaremos listas con tipos mas complejos que una variable, numero o cadena, es decir, usaremos listas sobre todo con objetos definidos por una clase.

Imaginemos que queremos llevar un registro de los enemigos que hay en el juego,

Tendremos una clase Enemigo

Declaramos nuestro List

public List<Enemigo> enemigos=new List<Enemigo>();

Ahora queremos almacenar un nuevo enemigo, pero no queremos almacenarlo si esta repetido, es decir, solo almacenaremos un enemigo que no este ya en la lista, con arrays seria un proceso mas lento, habria que recorrer el array para saber si esta ya o no, crear una copia del array con una dimensión mayor y volcar de un array a otro.

Con listas es mucho más sencillo, podemos crearnos una función que es publica y que no delvuelve ningun valor void llamada RegitraEnemigo, la cual recibe un parametro de tipo Enemigo llamado e

Lo primero que hace es comprobar si la lista ya contiene a ese enemigo con enemigos.Contais(e) una funcion propia de las listas que devuelve un bool es decir, verdadero o falso, si devuelve false, entonces e no esta en la lista enemigos por lo que lo podemos añadir con enemigos.Add(e) que mete ese enemigo en la lista

public void RegistraEnemigo(Enemigo e){

if (enemigos.Contains (e) == false) {
enemigos.Add (e);
}
}

Por el contrario si lo que queremos es borrar un enemigo que ya esta en la lista , lo que haremos sera comprobar previamente que esta en la lista y después borrarlo.

public void  QuitarEnemigo(Enemigo e){

if (enemigos.Contains (e)) {
enemigos.Remove (e);
}
}

Hay que aclarar que un eliminado de un objeto de un List no lo borrara de la jerarquía , lo que hacemos es borrar la referencia que estaba guardada en la lista para borrarlo de la jerarquía habría que usar Destroy(gameObject);

Ad debug output

The ad is displayed on the page

current post: Añadir y quitar elementos de una lista en Unity, ID: 2488

Ad: Anuncio2 (2573)
Placement: After Content 2 (after-content_2)

Display Conditions
general conditions
Adwp_the_query
term_id0
taxonomy0
is_main_query11
is_rest_api0
page01
numpages01
is_archive1
is_search1
is_home1
is_4041
is_attachment1
is_singular11
is_front_page1
is_feed1




Find solutions in the manual

Leave a Reply

Your email address will not be published. Required fields are marked *