有一个具体问题:
在我的游戏中,不同用户可以向基于本地的应用添加帐户。基本上,我想将名称,分数和所选的头像图像保存到三个差异列表中。但我认为:
将值(例如“ 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
有人可以解释我为什么吗?还有没有更好的主意来制作具有特定值的球员数据?可以添加和删除用户,因此我必须拥有一个动态系统,在该系统中,我可以获取球员姓名,得分和选择的化身。我认为我可以通过这些列表来实现这一点,但是也许有更好的方法。
非常感谢您!
答案 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 );
}