c# - 如何在 C# 中使用按键遍历列表

标签 c# list unity3d user-interface

我可能想得太多了,但我正在尝试获取我已有的列表,然后通过按键一个接一个地浏览列表。

例如,我在一个列表中有三个字符串,当玩家按 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/

相关文章:

r - 如何使用列表中的字符串值对数据框进行子集化?

c# - 如何在碰撞时销毁其他游戏对象?

c# - 如何从 Unity 中的函数返回多个值?

c# - 具有多个接口(interface)的 ObjectForScripting 不起作用

c# - 变量声明后的括号

list - 了解如何 :sprint and list evaluation works in haskell

c# - 使用 C#/Java/Visual Basic 填充 Word 2007 模板

list - 如何在 Flutter 中反转 ListView

audio - 无法为Wwise安装GVR Audio SDK

java - 如何重置或重启 ARCore session ?