Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

585
Visualizações
Alternar bool con checkbox y playerprefs en Unity C#

Estoy tratando de hacer una casilla de verificación en la interfaz de usuario de Unity que devuelva un juego sin fin bool como "verdadero" y "falso" si es un juego cronometrado. Quiero hacer esto con PlayerPrefs. Entiendo que PP solo admite int, float y strings. Creé una función que es fiel a 1.

Tengo un Game Manager que maneja el estado general del juego, este gameobject es el único en mi juego que no se destruye durante la carga.

Hasta ahora, Game Manager tiene un bool 'endless' que se inicializa como

 endless = PlayerPrefs.GetInt("Endless", 1) == 0;

en la función de inicio.

Ahora tengo un menú de opciones que alberga la casilla de verificación, en este script es el siguiente:

 public void OnToggleEndless() { if (endLessToggle.isOn) { PlayerPrefs.SetInt("Endless", manager.endless ? 1 : 0); print("Endless Button ticked"); } else { PlayerPrefs.SetInt("Endless", manager.endless ? 0 : 0); print("Endless Button unticked"); } }

Pero cuando lo conecto, juego el juego y voy al menú de opciones y marco 'Juego sin fin', no pasa nada. Traté de poner OnToggleEndless(); método en Actualizar, pero eso solo me da líneas interminables de la impresión ("Botón sin fin marcado"); mensaje, los PlayerPrefs no se guardan. Me pregunto si la casilla de verificación está conectada correctamente. ¡No puedo descifrar esto!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Los PlayerPrefs no se guardan

El guardado de PlayerPrefs parece defectuoso. ¿Está seguro de que desea verificar manager.endless en lugar de endLessToggle.isOn ?

Porque el estado de endLessToggle.isOn cambia dependiendo de si habilitó o deshabilitó la casilla de verificación. Pero el estado de manager.endless nunca cambia y se establece en verdadero/falso al comienzo del juego.

Esto da como resultado que en realidad no cambie la variable PlayerPrefs cuando activa la casilla de verificación.

Ejemplo:

 private void Start() { // Check if we enabled or disabled the endlessToggle Checkbox last time we played // and set the checkbox accordingly. endLessToggle.isOn = (PlayerPrefs.GetInt("Endless", 1) == 0); } // Call when we toggle the Checkbox. public void OnToggleEndless() { // Get the current state of our toggle button. int enable = endLessToggle.isOn ? 1 : 0; // Log result into console to test it. Debug.Log("We set Endless to: " + enable); // Set the PlayerPrefs equal to our current state. PlayerPrefs.SetInt("Endless", enable); }

No creo que necesite usar una variable global de su GameManager de todos modos, porque ya tiene PlayerPrefs que hace lo mismo por usted.

Además, debe establecer el estado de CheckBox igual a PlayerPrefs cuando inicia el juego.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda