반응형
리스트를 사용하다 보면 원하는 요소의 값대로 정렬하고자 할 때가 있다.
그럴 때 적당히 수정해서 사용하면된다.
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);
}
}
반응형
'unity C#' 카테고리의 다른 글
[Unity] EventSystem설정 터치 감도 조절 (4) | 2015.10.26 |
---|---|
[Unity] Hashtable > ArrayList > JsonData (0) | 2015.10.26 |
[Unity] C# Threading 사용하기 (0) | 2015.03.04 |
[Unity] RectTransform anchor 스크립트상에서 변경하기. (0) | 2015.02.14 |
[Unity] sublime 연동하기 (0) | 2015.02.11 |