Je tiens à préciser que j'ai contourné mon problème et que je suis arrivé à mes fins en utilisant des TAG mais j'aurais voulu comprendre pourquoi ma première solution ne marche pas.
Les deux méthodes sont visible dans le code ci-dessous.
Je créé des gameObject avec mon premier if et mon but est de les détruire quand je passe dans mon else.
Je voulais dans un premier temps détruire tout les gameobject avec le même nom (DiceInPool) à l'aide d'une boucle mais cela ne détruit qu'un seul gameObject.
Je ne sais jamais trop comment exposer mes soucis sur le forum (trop en dire ou pas assez) mais la je pense que le code parle de lui même, sinon dites le moi et je développerai plus
Code : Tout sélectionner
public void PoolPanel(/*PlayerStat currentPlayer*/)
{
int sizeOfDice = 20; //Taille de l'image
if(poolPannel.activeSelf == false)
{
poolPannel.SetActive(true);
float decay = 0;
foreach(SODice dice in currentPlayer.GetPool())
{
GameObject myGo = new GameObject();
myGo.name = "DiceInPool";//Nommer des GO pour les détruire avec la 1ère méthode
myGo.tag = "ToDestroy"; //Tag des GO pour les détruire avec la 2ème méthode
myGo.transform.parent = poolPannel.transform;
myGo.AddComponent<Image>();
myGo.GetComponent<Image>().sprite = dice.GetMonstre().portrait;
Debug.Log(decay);
myGo.GetComponent<RectTransform>().sizeDelta = new Vector2(sizeOfDice, sizeOfDice);
myGo.GetComponent<RectTransform>().localPosition = new Vector3(decay, -8, 0);
decay *= -1;
if(decay <= 0)
{
decay -= myGo.GetComponent<RectTransform>().rect.width;
}
}
/*Ajustement de la taille de la fenêtre en fonction du nombre de dé en pool*/
poolPannel.GetComponent<RectTransform>().sizeDelta = new Vector2((currentPlayer.GetPool().Count + 1) * sizeOfDice, poolPannel.GetComponent<RectTransform>().rect.height);
}
else
{
//2EME METHODE
GameObject[] diceInPool;
diceInPool = GameObject.FindGameObjectsWithTag("ToDestroy");
foreach(GameObject dice in diceInPool)
{
Destroy(dice.gameObject);
}
//1ERE METHODE : NE DETRUIT QU'UN GAMEOBJECT
/*
foreach (SODice dice in currentPlayer.GetPool())
{
Destroy(GameObject.Find("DiceInPool"));
}
*/
poolPannel.SetActive(false);
}
}