How I Sort a List at Start?,Sorting a List on Start
So I'm trying to use the Sort method on my list and it is working, but just on Void Update. When I try to use it in the void start or a Switch it does not sort the list. I want to organize my list just once to be able to remove and change values without Rearranging, but as I said that only works on Update if I remove like MyList.Remove(Mylist[0]) it will basically delete the list. This is how and what it works that I am using
void Start()
{
MyList.AddRange(GameObject.FindGameObjectsWithTag("Exemple"));
}
void Update()
{
MyList.Sort(SortFunction);
}
private int SortFunction(GameObject A, GameObject B)
{
StatusScript a = A.GetComponent<StatusScript>();
StatusScript b = B.GetComponent<StatusScript>();
if (a.Speed > b.Speed)
{
return -1;
}
else if (a.Speed < b.Speed)
{
return 1;
}
return 0;
}
}
This is How a Want to use
void Start() { MyList.AddRange(GameObject.FindGameObjectsWithTag("Exemple")); }
void Update()
{
switch (ListStates)
{
case States.Organize:
MyList.Sort(SortFunction);
ListStates = States.MakeAction;
break;
case States.MakeAction:
// Change values and send to Remove or Add
break;
case States.Remove:
break;
case States.Add:
break;
default:
break;
}
}
private int SortFunction(GameObject A, GameObject B)
{
StatusScript a = A.GetComponent<StatusScript>();
StatusScript b = B.GetComponent<StatusScript>();
if (a.Speed > b.Speed)
{
return -1;
}
else if (a.Speed < b.Speed)
{
return 1;
}
return 0;
}
Once the list is sorted, if you change the speed values of the object or add/remove elements, the list won't sort itself automatically until you call Sort again, you know this, right?
Your answer
Follow this Question
Related Questions
Generate unique random numbers and sort them. 3 Answers
Sort list by distance AND by being active 3 Answers
Compare and sort Input 0 Answers
Sort a list of class by a vector variable in the class 2 Answers