用户数据的列表元素的索引

时间:2018-12-13 08:03:06

标签: database list unity3d arraylist user-controls

有一个具体问题:

在我的游戏中,不同用户可以向基于本地的应用添加帐户。基本上,我想将名称,分数和所选的头像图像保存到三个差异列表中。但我认为:

将值(例如“ 0”)添加到名为userScore的列表时,unity会在相同的索引处调试相同的值,但计数值是正确的。可以说我在userScore列表中添加了5倍“ 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 0,索引为1 0,索引为2 0,索引为3 0,索引为4

有人可以解释我为什么吗?还有没有更好的主意来制作具有特定值的球员数据?可以添加和删除用户,因此我必须拥有一个动态系统,在该系统中,我可以获取球员姓名,得分和选择的化身。我认为我可以通过这些列表来实现这一点,但是也许有更好的方法。

非常感谢您!

1 个答案:

答案 0 :(得分:1)

为什么使事情变得复杂?

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

documentation IndexOf中所示,返回列表中值的首次出现的索引。如果您有一个包含[1, 1, 1, 1]的列表,则调用IndexOf(1)会返回0,因为无论在多少次调用IndexOf时都在索引0处找到1。


由于您打算操纵更多信息,因此我建议您使用struct /类来包含用户的数据:

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