Сортировка спискав Unity c # - PullRequest
0 голосов
/ 19 января 2019

Я пытаюсь составить рейтинг для какой-нибудь университетской работы.Лучший способ, который пришёл в голову, - это создать список с String, Integer для каждой позиции.Я искал в документации: 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);

        }

    }
}

но теперь я застрял.Я хочу добавить информацию в список, когда игра закончится.Когда мне нужно вызывать функцию?rankig.sort ();будет сортировать бентуацию (целое число) каждого игрока?Еще один вопрос: как мне перезапустить процесс, чтобы создать нового игрока?Любой совет будет очень полезным.

Спасибо, Марко

1 Ответ

0 голосов
/ 19 января 2019

Если я правильно понимаю, вы хотите отсортировать «умножение (целое число) каждого игрока», поэтому, возможно, решение будет использовать

ranking = ranking.OrderBy(x => x.puntuation).ToList();

или

ranking = ranking.OrderByDescending(x => x.puntuation).ToList();

Вместо:

ranking.Sort();

Если я ошибаюсь, поправьте меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...