Probablemente lo he estado pensando demasiado, pero estoy tratando de tomar una lista que tengo y revisar la lista una por una presionando una tecla.
Por ejemplo, tengo tres cadenas en una lista, y cuando el jugador presiona L pasa de la opción 1 a la 2. Luego de la 2 a la 3. Luego de la 3 a la 1. También necesito guardar esta opción en una cadena separada.
Gracias a cualquiera que pueda ayudar
Editar:
Así que tengo un script que verifica si se presionó la tecla
private void Update() { if (Input.GetKeyDown(KeyCode.L)) { gs.ChangeLevel(levelTxt); } }Y luego, en un script diferente, tengo la función que cambiará la opción. Sé que esto no es correcto, pero espero que puedas ver lo que estoy tratando de hacer.
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]; }Y
public void ChangeLevel(Text level) { level.text = levels[levelIndex].ToString(); Debug.Log("It is now set to " + levels[levelIndex]); }Editar #3
Hola de nuevo chicos, el código compartido en los comentarios ayudó, pero ahora necesito tomarlo y disminuirlo con un botón diferente. Cualquier ayuda sería apreciada.
No estoy seguro de si estamos en la misma longitud de onda, sin embargo, si solo desea iterar una lista, necesita un puntero. Puede crear una función para incrementar el puntero y mostrar el valor, todo en uno.
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]; }y
private void Update() { if (Input.GetKeyDown(KeyCode.L)) { gs.ChangeLevel(IncrementLevel()); } }Prueba esto:
// not tested for compilation, I used 0 as the start // since that's the index of the first item in a list int index = 0; if (Input.GetKey("L")) { index++; if (index > 2) { index = 0; } // the item you want is yourList[index], // do whatever you want with it, just make sure // it's used after the if index > 2 statement; }