I got this function to create a few button elements:
//Keep track of added perk buttons
List<GameObject> displayedPerkButtons = new List<GameObject>();
//Adds perk buttons based on the current chosenPerks.
void PopulatePerkChooser()
{
//Removes any old perk buttons if present
if (displayedPerkButtons.Count > 0)
{
for (int i = 0; i < displayedPerkButtons.Count; i++)
{
Destroy(displayedPerkButtons*.gameObject);*
}
displayedPerkButtons.Clear();
}
//For each perk in chosenPerks, instantiate a new PerkButton, run its construct function passing along the specific perk, and add it to the displayedPerkButtons list for future removal
for (int i = 0; i < PerkManager.Instance.chosenPerks.Count; i++)
{
GameObject newPerkButton = Instantiate(perkTemplate, perkButtonContainer.transform);
newPerkButton.GetComponent().ConstructPerkButton(PerkManager.Instance.chosenPerks*);*
displayedPerkButtons.Add(newPerkButton);
}
//Constructs “Random perk” button at the end, and add this as well to displayedPerkButtons
GameObject randomPerkButton = Instantiate(randomPerkTemplate, perkButtonContainer.transform);
displayedPerkButtons.Add(randomPerkButton);
}
It generates the buttons just fine, but it fails to destroy any old buttons if it is run more than once. Interestingly, if I make a second function that only contains the removal part, and run that separately after the first function, it removes the buttons as intended - so something seems to be wrong with how it interacts with the creation of the new buttons.
What might I be missing here?