Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
We use cookies to ensure that we provide you with the best possible experience on our site.
Votre source incontournable sur Unity et le développement web
Votre source incontournable sur Unity et le développement web
Sur Unity, il y a plusieurs fonctions permettant de supprimer un élément provenant d’une liste.
Ces méthodes utilisées fonctionnent aussi pour tout type de projet en C#.
Pour supprimer un élément d’une liste sur Unity, on utilise la méthode Remove en passant en argument l’élément à supprimer.
Lorsque l’élément est présent et supprimé de la liste, la fonction renvoie true
.
using System.Collections.Generic;
using UnityEngine;
public class TrackerMonoBehaviour : MonoBehaviour
{
public List<GameObject> trackGameObjects = new List<GameObject>();
public void StopSelfTracking()
{
if (trackGameObjects.Remove(gameObject))
{
// Success Remove Tracking
}
}
}
Pour rappel : l’élément passé en argument doit être du même type que la liste ou d’un type enfant.
Pour plus d’informations sur les listes, veuillez consulter : Unity List Collection: Guide complet
Il est important de noter que les listes ne fonctionnent pas comme les dictionnaires.
Si un élément est supprimé, les index sont ajustés.
Par exemple, supprimer l’élément à l’index 0 modifie les index suivants : (1 devient 0, 2 devient 1, etc.).
Il n’est pas conseillé de supprimer des éléments tout en bouclant dans la liste, cela pourrait entraîner des erreurs ou des incohérences.
Il peut être plus sage de cloner la liste en amont ou d’utiliser RemoveAll.
Un élément peut aussi être supprimé via son index, en utilisant la méthode RemoveAt et en passant l’index en argument.
Pour rappel : l’index dans les listes commence à 0.
var ints = new List<int>() { 5, 4, 2 };
// remove first element
ints.RemoveAt(0);
Note : il est conseillé, lors de la suppression d’un élément par index, de tester avant si l’index est présent dans la liste via Count.
On veut éviter les erreurs « index out of range« .
Un tips très utile lorsque vous souhaitez supprimer le dernier élément d’une liste ou d’un tableau :
On commence par récupérer l’index du dernier élément en utilisant Count tout en le soustrayant de 1 : int lastIndex = myList.Count - 1;
Puis on utilise RemoveAt : myList.RemoveAt(lastIndex);
var ints = new List<int>() { 5, 4, 2 };
ints.RemoveAt(ints.Count - 1);
Pour supprimer directement plusieurs éléments, on peut utiliser RemoveRange.
Elle est utilisée lorsque l’on veut supprimer plusieurs éléments consécutifs.
Cette fonction prend 2 paramètres : le premier désigne l’index où l’on veut commencer à supprimer, le second indique le nombre d’éléments à supprimer.
private void RemoveRange()
{
var ints = new List<int>() { 5, 4, 2 };
// remove 2 values starting at index 1
ints.RemoveRange(1, 2);
// only the first value remains
// List<int>() { 5 };
}
Pour supprimer plusieurs éléments d’un coup, on utilise RemoveAll.
Cette fonction prend en paramètre une expression lambda.
Cela permet de créer une condition : si un élément de la liste correspond à cette condition, il sera supprimé.
public List<GameObject> gameObjects = new List<GameObject>();
private void RemoveWithTagPlayer()
{
// remove all gameObject with the player
gameObjects.RemoveAll(x => x.CompareTag("Player"));
}
Sur Unity, il existe différentes méthodes pour supprimer des éléments d’une liste.
Chacune d’elles est à utiliser dans une situation spécifique.
Je tiens à vous mettre en garde contre l’utilisation de Remove dans une boucle, qui peut entraîner des situations non voulues.
Merci d’avoir lu l’article. Amusez-vous sur Unity !
Image de base par OpenIcons.