unity C#
[Unity] 리스트 재 정렬하기 list resorting
bamsik
2015. 10. 26. 12:15
반응형
리스트를 사용하다 보면 원하는 요소의 값대로 정렬하고자 할 때가 있다.
그럴 때 적당히 수정해서 사용하면된다.
void swap(int _i, int _j) {
ItemHandler tempItem = MainList[_i];
MainList[_i] = MainList[_j];
MainList[_j] = tempItem;
}
IEnumerator sorting() {
yield return new WaitForSeconds (0.5f);
// 승점 정렬
for(int i = 0 ; i < MainList.Count; i++ ) {
for(int j = i + 1 ; j < MainList.Count; j++) {
if(MainList[i].Point < MainList[j].Point) {
swap(i, j);
}
else if(MainList[i].Point == MainList[j].Point
&& MainList[i].Gold < MainList[j].Gold) { // 동률일 경우, gold,
swap(i, j);
}
else if(MainList[i].Point == MainList[j].Point
&& MainList[i].Gold == MainList[j].Gold
&& MainList[i].Silver < MainList[j].Silver){ // 동률에 gold까지 같으면 silver.
swap(i,j);
}
else if(MainList[i].Point == MainList[j].Point
&& MainList[i].Gold == MainList[j].Gold
&& MainList[i].Silver == MainList[j].Silver
&& MainList[i].Bronze < MainList[j].Bronze){ // 동률에 gold, silver까지 같으면 bronze.
swap(i,j);
}
else if(MainList[i].Point == MainList[j].Point
&& MainList[i].Gold == MainList[j].Gold
&& MainList[i].Silver == MainList[j].Silver
&& MainList[i].Bronze == MainList[j].Bronze
&& MainList[i].Garak < MainList[j].Garak){ // 동률에 gold, silver, bronze까지 같으면 garak.
swap(i,j);
}
else if(MainList[i].Point == MainList[j].Point
&& MainList[i].Gold == MainList[j].Gold
&& MainList[i].Silver == MainList[j].Silver
&& MainList[i].Bronze == MainList[j].Bronze
&& MainList[i].Garak == MainList[j].Garak
&& MainList[i].Bbak > MainList[j].Bbak){ // 동률에 gold, silver, bronze, garak까지 같으면 bbak.
swap(i,j);
}
}
}
for(int t = 0 ; t < MainList.Count; t++ ) {
MainList[t].gameObject.transform.SetSiblingIndex(t+1);
}
}
반응형