List.Sort() 람다식 이용
class SortData
{
public int index;
public int sortNum;
}
List<SortData> sortDataList = new List<SortData>();
private void Start()
{
int random = 0;
for (int i = 0; i < 5; i++)
{
SortData sortData = new SortData();
random = Random.Range(0, 100);
sortData.index = i;
sortData.sortNum = random;
sortDataList.Add(sortData);
}
int noSortCount = sortDataList.Count;
for (int i = 0; i < noSortCount; i++)
{
Debug.LogError("index : " + sortDataList[i].index + "sortNum : " + sortDataList[i].sortNum);
}
Debug.LogError("-------------------------------------------------");
sortDataList.Sort(Sort);
Debug.LogError("-------------------------------------------------");
int sortCount = sortDataList.Count;
for (int i = 0; i < sortCount; i++)
{
Debug.LogError("index : " + sortDataList[i].index + "sortNum : " + sortDataList[i].sortNum);
}
}
int Sort(SortData A, SortData B)
{
if (A.sortNum < B.sortNum) return -1;
else if(A.sortNum > B.sortNum) return 1;
else
{
if (A.index < B.index) return -1;
else if (A.index > B.index) return 1;
}
return 0;
}
이러한 방식으로도 작성 가능
sortDataList.Sort(delegate (SortData A, SortData B)
{
if (A.sortNum < B.sortNum) return -1;
else if (A.sortNum > B.sortNum) return 1;
else
{
if (A.index < B.index) return -1;
else if (A.index > B.index) return 1;
}
return 0;
});
리스트 소팅할때 delegate로 소팅 조건을 적거나 함수를 따로 작성하여 소팅 조건을 사용할수있다
오름차순과 내림차순이 가능하다
'유니티' 카테고리의 다른 글
유니티[유니티 C#]String을 DataTime으로 변환 (0) | 2021.05.19 |
---|---|
[유니티 C#]string 문자열 치환(Replace) (0) | 2021.05.19 |
[유니티 C#]String 문자열(Split,IndexOf) (0) | 2021.05.19 |