Bonjour à tous,
Il y a quelque chose que je ne comprends pas avec les actions, c’est la valeur des paramètres. Comment faire pour que la valeur des paramètres soit fixée au moment de la déclaration de l’action, ou continue de dépendre de la variable donnée ?
Par exemple :
int id = 4;
mybutton.clicked += new System.Action(() => { ChangeViewType(id); });
id = 10;
Comment faire pour que le paramètre passé lors de la déclaration reste fixe (4) et ne se modifie pas en 10 lorsque id = 10 ?
Bizarrement, lorsque j’écris ce code :
foreach (VisualElement b in list)
{
if (b.GetType().ToString() == "UnityEngine.UIElements.Button")
{
buttonViewList.Add(root.Q<Button>(b.name));
buttonViewList[buttonViewList.Count - 1].clicked += new System.Action(() => { ChangeViewType(b.name); });
}
}
Lorsque j’appuie sur un bouton quand je lance l’application, j’obtiens le bon nom de bouton à chaque fois.
En revanche, avec ce code :
for(int i = 0; i < list.Count; i++)
{
if (list[i].GetType().ToString() == "UnityEngine.UIElements.Button")
{
buttonViewList.Add(root.Q<Button>(list[i].name));
buttonViewList[buttonViewList.Count - 1].clicked += new System.Action(() => { ChangeViewType(list[i].name); });
}
}
Là l’application plante quand j’appuie sur un bouton, parce que l’action appelle list[i].name avec i = 3.
On dirait donc que dans le premier cas la valeur du paramètre est fixée, tandis que dans la seconde est continue d’être variable.
Merci par avance pour vos réponses !