Introducción
En este artículo vamos a ver cómo guardar una variable booleana en Unity utilizando la clase PlayerPrefs, las variables booleanas en Unity son del tipo bool. La clase PlayerPrefs de por si no cuenta con un método para guardar datos booleanos por lo que vamos a guardar en memoria un dato entero y utilizar esta información para determinar si el valor de la variable es verdadero o falso. Luego veremos cómo cargar la variable booleana leyendo de la memoria el valor entero almacenado y aplicando lógica para transformar ese dato en verdadero o falso.
Guardar este tipo de variables nos puede servir para guardar estados, por ejemplo si el jugador ya ha hecho alguna acción como cerrar una ventana y que esta no vuelva a aparecer.
En el siguiente vídeo vemos cómo guardar y cargar DATOS PRIMITIVOS con PlayerPrefs en Unity
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;