Индекс элементов списка для пользовательских данных - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть конкретный вопрос:

В моей игре разные пользователи могут добавить учетную запись в локальное приложение.В основном я хотел сохранить имена, оценки и выбранные аватары в трех разных списках.Но я изменил следующее:

При добавлении значения (например, «0») в список с именем userScore, unity отлаживает те же значения с тем же индексом, но значение счетчика является правильным.Допустим, я добавляю пять раз «0» в свой список userScore, userScore.Count = 5, но когда я использую следующий код отладки:

 for (int i = 0; i < userScore.Count; i++)
         {
             Debug.Log("Score " + userScore[i] + "with Index " + userScore.IndexOf(userScore[i]) );
     }

, я получаю результат 0 с индексом 0 (пять раз)- но это должно быть

0 с индексом 0 0 с индексом 1 0 с индексом 2 0 с индексом 3 0 с индексом 4

Может кто-нибудь объяснить, почему?И есть ли у кого-то лучшая идея сделать статистику игрока с конкретными значениями?Пользователи могут быть добавлены и удалены, поэтому у меня должна быть динамическая система, в которой я могу получить имя игрока, счет и выбранный аватар.По моему мнению, я бы достиг этого с помощью этих списков, но, возможно, есть лучший способ.

большое спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

Почему все усложняется?

for (int i = 0; i < userScore.Count; i++)
{
    Debug.Log("Score " + userScore[i] + "with Index " + i );
}

Как указано в документации IndexOf, возвращает индекс первого вхождения значения в списке.,Если у вас есть список, содержащий [1, 1, 1, 1], вызов IndexOf(1) вернет 0, потому что 1 находится в индексе 0, независимо от того, сколько раз вы звоните IndexOf


Я советую вам использоватьструктура / класс для хранения данных ваших пользователей, поскольку вы планируете манипулировать дополнительной информацией:

public struct UserData
{
    public int ID;
    public string Name;
    public int Score;
    public int AvatarIndex;
}

// ...

public List<UserData> UserData;

for (int i = 0; i < UserData.Count; i++)
{
    Debug.Log("Score " + UserData.Score[i] + "with Index " + i );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...