Home > OS >  How delete clone GameObjects in Unity
How delete clone GameObjects in Unity

Time:07-13

So I didn't find something useful, to solve my problem. My script is downloading an JSON Array from my Server and fills some text with that informations. Thats the part of code:

 void DrawUI()
{
    GameObject buttonObj = transform.GetChild (0).gameObject; //Gets button to clone it

    GameObject g;

    int N = allCars.Length;

    for (int i = 0; i < N; i  )
    {
        g = Instantiate(buttonObj, transform);

        g.transform.Find("name").GetComponent<Text>().text = allCars[i].carName;
        g.transform.Find("type").GetComponent<Text>().text = allCars[i].type;
        g.transform.Find("price").GetComponent<Text>().text = allCars[i].price  "€";
        

        
        if(balance < int.Parse(allCars[i].price))
        {
            g.transform.Find("price").GetComponent<Text>().color = Color.red;
        } else if (balance >= int.Parse(allCars[i].price))
        {
            g.transform.Find("price").GetComponent<Text>().color = new Color32(53, 140, 3, 255);
        }

        g.GetComponent<Button>().AddEventListener(i, OpenBuyDialog);
        itemIndex = i;

    }

    Destroy(prefab);
}

This code loops and creates clones of my buttons, all fine. When user confirms the Buy Dialog, it should reload/refresh the list, but for that I have to delete the old clones. I can't find how to do that properly.

CodePudding user response:

Assume the transform has only one child (buttonObj) at the beginning, then you can delete the clones with this code.

var count = transform.childCount;
for (var i = 1; i != count;   i)
    Destroy(transform.GetChild(i).gameObject);

CodePudding user response:

Add your instantiates objects to a member:

private List<GameObject> buttons;

On refresh, iterate through buttons and call Destroy on each GameObject.

  • Related