Я пытаюсь составить рейтинг для какой-то университетской работы. Лучший способ, который пришел на ум, - создать список со строкой, целым числом для каждой позиции. Я искал в документации: https://unity3d.com/es/learn/tutorials/modules/intermediate/scripting/lists-and-dictionaries?gq=sort, где я нашел идеальный пример для моей проблемы, поэтому я начал работать. Теперь я создал Interfece:
public class Name_Puntuation: IComparable
public string namePlayer;
public int puntuation;
public Name_Puntuation( string newNomPlayer, int newPuntuation){
nomPlayer = newNomPlayer;
puntuation= newPuntuation;
}
public int CompareTo(Name_Puntuation other){
if (other == null) {
return 1;
}
return Puntuation - other.Puntuation;
}
Я также добавил в свой GameController, что я хочу сделать со списком. Этот класс управляет полотном игры. Мы печатаем всю информацию в текстовые поля, и поэтому я хотел сделать с ранжированием:
public class GameController : MonoBehaviour {
public List <Name_Puntuation> ranking;
void Start () {
playerName= GetComponent<MenuController> ().inp; //name the player choosed
ranking = new List<Name_Puntuation> ();
}
void Update () { }
public void Ranking(){
int puntuation= punts;
ranking.Add (new Name_Puntuation(playerName, puntuation));
ranking.Sort ();
foreach (Nom_Puntuacio p in ranking) {
print (p.playerName+ " " + p.puntuation);
}
}
}
но теперь я застрял. Я хочу добавить информацию в список, когда игра будет завершена. Когда я должен вызвать функцию? ранжирование.сортировка(); будет сортировать знаки препинания (целые числа) каждого игрока? Напоследок вопрос, как мне перезапустить процесс создания нового плеера? Любой совет будет очень полезен.
Спасибо, Марко





Если я правильно понимаю, вы хотите отсортировать «знак препинания (целое число) каждого игрока», поэтому, возможно, решением будет использование
ranking = ranking.OrderBy(x => x.puntuation).ToList();
или
ranking = ranking.OrderByDescending(x => x.puntuation).ToList();
Вместо:
ranking.Sort();
Если я ошибаюсь, поправьте меня