Codifiqué el siguiente código. Quiero verificar qué PlayerPrefs está vacío y guardar el texto del cuadro de entrada y luego mostrarlo en el texto de la interfaz de usuario.
SaveTittlesText1.text=PlayerPrefs.GetString("1"); SaveTittlesText2.text=PlayerPrefs.GetString("2"); SaveTittlesText3.text=PlayerPrefs.GetString("3")el problema es que Uitext3 muestra texto de Uitex2, por favor ayuda, quiero lograr esto en más de 10 PlayerPrefs
if (PlayerPrefs.HasKey ("1") == false) { PlayerPrefs.SetString("1",InputsaveTittes.text.ToString()); PlayerPrefs.Save(); } else if (PlayerPrefs.HasKey ("1") == true) { PlayerPrefs.SetString("2",InputsaveTittes.text.ToString()); PlayerPrefs.Save(); } else if (PlayerPrefs.HasKey ("2") == false) { PlayerPrefs.SetString("2",InputsaveTittes.text.ToString()); PlayerPrefs.Save(); } else if (PlayerPrefs.HasKey ("2") == true) { PlayerPrefs.SetString("3",InputsaveTittes.text.ToString()); PlayerPrefs.Save(); }Realmente no entiendo ese caso de uso/lógica, pero te estás saltando un caso:
if (PlayerPrefs.HasKey ("1") == false) { // sets 1 } else if (PlayerPrefs.HasKey("1") == true) // WHAT IF IT ALSO PlayerPrefs.HasKey ("2") == true here ? { // sets 2 } else if (PlayerPrefs.HasKey ("2") == false) // WILL NEVER BE REACHED { // sets 2 } else if (PlayerPrefs.HasKey ("2") == true) // WILL NEVER BE REACHED { // sets 3 }¡sus dos últimos casos nunca serán alcanzados/comprobados en absoluto ya que sus dos primeros casos ya cubren todas las posibilidades!
deberías comprobar como por ejemplo
if (!PlayerPrefs.HasKey ("1")) { PlayerPrefs.SetString("1", InputsaveTittes.text); } // already know that 1 is set since otherwise it would have entered the first case else if (!PlayerPrefs.HasKey ("2")) { PlayerPrefs.SetString("2", InputsaveTittes.text); } // Any other case -> this means 1 and 2 are already set else { PlayerPrefs.SetString("3", InputsaveTittes.text); } PlayerPrefs.Save();o en bucles de uso general!
// iterate over 1,2,3 for(var i = 1; i <= 3; i++) { // check if current index is already used if(!PlayerPrefs.HasKey(i)) { // if not set it PlayerPrefs.SetString(i.ToString(), InputsaveTittes.text); PlayerPrefs.Save(); // skip the rest of the loop break; } }En realidad, sin embargo, preferiría simplemente tener otra entrada para almacenar el índice actual, especialmente si busca más elementos, como por ejemplo
// defaults to 0 if there is no index yet -> first player will have index 1 var index = PlayerPrefs.GetInt("index", 0); // increase index by 1 index++; // store string to this new index PlayerPrefs.SetString(index.ToString(), InputsaveTittes.text); // also store the new index PlayerPrefs.SetInt("index", index); PlayerPrefs.Save(); al mismo tiempo PlayerPrefs.GetInt("index", 0); ahora también devolverá la cantidad de cadenas ya guardadas.
el problema es que Uitext3 muestra texto de Uitex2
Esto, sin embargo, parece que simplemente hizo referencia al mismo componente de Text en ambos campos SaveTittlesText2 y SaveTittlesText3 .