我可能想得太多了,但我正在尝试获取我已有的列表,然后通过按键一个接一个地浏览列表。
例如,我在一个列表中有三个字符串,当玩家按 L 时,它从选项 1 转到 2。然后 2 到 3。然后 3 到 1。我还需要将此选项保存到一个单独的字符串.
感谢任何能提供帮助的人
编辑:
所以我有一个脚本可以检查他们的键是否被按下
private void Update()
{
if (Input.GetKeyDown(KeyCode.L))
{
gs.ChangeLevel(levelTxt);
}
}
然后在不同的脚本上,我有将更改选项的功能。我知道这是不正确的,但希望您能够看到我正在尝试做的事情
public List<String> levels;
public string level;
public void ChangeLevel()
{
level = levels.Count[]++;
if(levels.Count > levels.Count)
{
levels.Count[0];
}
}
Edit #2
So I have almost got it with help from the comments. I just need it to increment now (if this is suppose to it will only stay on the first one)
```
public string IncrementLevel()
{
if (levels.Count == 0)
{
levelIndex = 0;
return "";
}
levelIndex = (levelIndex >= levels.Count - 1) ? 0 : levelIndex++;
return levels[levelIndex];
}
和
public void ChangeLevel(Text level)
{
level.text = levels[levelIndex].ToString();
Debug.Log("It is now set to " + levels[levelIndex]);
}
编辑#3
大家好,评论中共享的代码有所帮助,但现在我需要使用不同的按钮来减少它。任何帮助将不胜感激。
最佳答案
我不确定我们是否处于同一波长,但是,如果您只想迭代一个列表,那么您需要一个指针。您可以创建一个函数来递增指针并将值全部弹出。
private List<string> levels = new List<string>();
private int levelIndex = -1;
public string IncrementLevel()
{
levelIndex = (levels.Count == 0) ? -1 : (levelIndex >= levels.Count - 1) ? 0 : levelIndex + 1;
return (levelIndex == -1) ? "" : levels[levelIndex];
}
public string DecrementLevel()
{
levelIndex = (levels.Count == 0) ? -1 (levelIndex <= 0) ? levels.Count - 1 levelIndex - 1;
return (levelIndex == -1) ? "" : levels[levelIndex];
}
和
private void Update()
{
if (Input.GetKeyDown(KeyCode.L))
{
gs.ChangeLevel(IncrementLevel());
}
}
关于c# - 如何在 C# 中使用按键遍历列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65851931/