Cómo guardar y cargar un BOOL con PlayerPrefs en Unity

Introducción

Vamos a ver cómo guardar una variable lógica en Unity utilizando la clase PlayerPrefs, las variables lógicas son del tipo bool. Luego veremos cómo cargar esta variable.

Esto nos puede servir para guardar estados, por ejemplo si el jugador ya ha hecho alguna acción.

Cómo guardar un bool con PlayerPrefs

PlayerPrefs no tiene una función que permita guardar valores lógicos directamente, así que vamos a guardar un número entero que podrá valer 0 o 1 en función del estado de la variable booleana, para esto usamos el método estático “SetInt”, una función que necesita que le demos dos parámetros.

El primer parámetro es un string con el nombre que va a tener esta variable que vamos a almacenar, esto permitirá que luego lo podamos recuperar. El segundo parámetro es el valor entero que queremos guardar.

La instrucción que hará el guardado de los datos en Unity se vería de la siguiente forma:

PlayerPrefs.SetInt(“nombreDatoLogico”, boolData ? 1 : 0);

En este caso indicamos el nombre del dato entre comillas porque es un string, el segundo parámetro lo indicamos utilizando el operador ternario “?:” que funciona como una sentencia if simplificada, en primer lugar tenemos el dato lógico que queremos guardar, “boolData”, luego el operador “?” y luego los valores que devuelve si boolData es verdadero o falso separados por “: “.

La expresión “boolData ? 1 : 0” dará como resultado 1 si boolData es verdadero y 0 si boolData es falso.

Cómo cargar un bool con PlayerPrefs

Para cargar un bool en Unity usando PlayerPrefs tenemos que recordar que en el paso anterior lo guardamos como 0 si la variable es falsa o 1 si es verdera, por lo tanto recuperamos el valor entero usando la función “GetInt”, una función que se puede usar de dos formas distintas.

En la primer forma le damos un parámetro que va a ser el nombre del dato que queremos recuperar, el nombre que le dimos cuando ejecutamos la función “SetInt” que vimos anteriormente. Lo hacemos de la siguiente forma.

boolData =PlayerPrefs.GetInt(“nombreDatoLogico”)==1;

La ejecución del método estático “GetInt” de PlayerPrefs dá como resultado un número entero pero al utilizar el operador “==”, que nos compara si ambas expresiones son iguales, obtenemos un resultado lógico que podemos asignar a la variable “boolData“. Si el entero almacenado es 1, boolData será verdadero, sino será falso.

La segunda forma consiste también en darle el nombre del dato que utilizamos en la ejecución de “SetInt” pero además damos un valor por defecto que se utilizará en caso de que no haya un dato guardado bajo ese nombre, esto se hace de la siguiente forma.

boolData =PlayerPrefs.GetInt(“nombreDatoLogico”,0)==1;

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *