- Home /
Getting information of which Dropdown menu has been changed
I am making a program for auto generating plants on a terrain object. What I want to do is to be able to choose between a number of different plants to be generated on the terrain. To do this I have the user first select how many different plants he wants to have in the scene. Then I create the same number of Dropdown menus as the user has specified (and put them in a list). Now I want to be able to select different plants in the dropdown menus. My problem is that I need to know which dropdown menu has been changed so that I can change the corresponding plant to that dropdown menu. Thus I need to know which index that dropdown has in my list. Here is where I add the listeners to the dropdowns:
public void InitDropdowns()
{
if (plantLists == null)
{
GameObject[] dropdowns = cd.PlantLists;
plantLists = new Dropdown[dropdowns.Length];
plants = new GameObject[dropdowns.Length];
for (int i = 0; i < dropdowns.Length; i++)
{
plantLists[i] = dropdowns[i].GetComponent<Dropdown>();
plantLists[i].onValueChanged.AddListener(delegate { ChangePlant(i); });
}
}
}
And the ChangePlant() function is the following (the ph variable is just a script that holds the Prefabs of the plants):
void ChangePlant(int indx)
{
int value = plantLists[indx].value;
switch (value)
{
case 0:
plants[indx] = ph.plant1;
break;
case 1:
plants[indx] = ph.plant2;
break;
case 2:
plants[indx] = ph.plant3;
break;
case 3:
plants[indx] = ph.plant4;
break;
case 4:
plants[indx] = ph.plant5;
break;
}
}
I know that the parameter I use when I add the listener probably is wrong. The plants list is a list of the GameObject which represents my plants and the plantLists is the dropdowns which are supposed to set the correct GameObject in the plants list. Is there any way to pass the index of a dropdown in a list to the delegate function?
Your answer
Follow this Question
Related Questions
Comparing each random element in an array with each other element 3 Answers
Custom Class List - Passing the Class Vs Passing an Index 0 Answers
Select other index in list 0 Answers
how don't show some screen resolutions in my dropdown? 1 Answer
Outputting data to CSV file from multiple lists at specific Headers in the CSV? 0 Answers