Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

584
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!