用户数据的列表元素索引

Index of list elements for user data

我有一个具体问题:

在我的游戏中,不同的用户可以将帐户添加到基于本地的应用程序。基本上我想将姓名、分数和选择的头像图像保存到三个不同的列表中。但我意识到以下几点:

当向名为userScore 的列表添加一个值(f.e."0") 时,unity 在同一索引处调试相同的值,但计数值是正确的。假设我在我的 userScore 列表中添加了五次“0”,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 索引为 1 的 0 0 与索引 2 0 索引为 3 0 索引为 4

谁能解释一下为什么?有人有更好的主意来制作具有特定值的玩家统计数据吗?可以添加和删除用户,所以我必须有一个动态系统,我可以在其中获取玩家姓名、分数和选择的头像。在我看来,我会用这些列表来实现这一点,但可能有更好的方法。

非常感谢!

为什么要把事情弄复杂?

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

documentation IndexOf return 中所示,列表中 第一次出现 值的索引。如果你有一个包含 [1, 1, 1, 1] 的列表,调用 IndexOf(1) 将 return 0,因为在索引 0 处找到 1,无论你调用多少次 IndexOf


我建议您使用结构 / class 来包含您的用户数据,因为您打算操纵更多信息:

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 );
}