beasty-save-system / guides / save-manager-window.md

La ventana Save Manager

Tools > Beasty Save System > Save Manager abre la única ventana de editor del paquete. Hace tres cosas: crea y configura el BeastySaveManager de la escena, hace que los objetos sean guardables, y te muestra los archivos de guardado en disco para que puedas inspeccionarlos, restaurarlos o eliminarlos sin salir de Unity.

La ventana se titula Beasty Save Manager. Puedes anclarla donde quieras.

La ventana Save Manager con las tres secciones

Manager

La sección superior busca el BeastySaveManager en la escena abierta — incluso si está en un objeto inactivo.

La sección Manager con el inspector del BeastySaveManager embebido

Cuando no hay manager, aparece un mensaje (“No BeastySaveManager in the open scene.”) y un botón:

  • Create Beasty Save Manager — crea un GameObject llamado Beasty Save Manager con el componente en él. Es un solo paso deshacible, así que Ctrl+Z lo elimina limpiamente. Esta es la forma más rápida de configurar una escena nueva, y es donde empieza el camino sin código.

Cuando hay un manager, aparece un campo de objeto que apunta a él (haz clic para seleccionarlo en la Hierarchy), una tarjeta de estado, y todos los ajustes debajo.

La tarjeta de estado responde de un vistazo «qué está haciendo este manager ahora mismo»: el backend de almacenamiento activo (con una insignia Local o Cloud), el proveedor de usuario y su usuario actual cuando hay uno registrado, y — en Play Mode — el resultado del último guardado y de la última carga.

Bajo Settings, cada campo está agrupado por función, y los grupos son contextuales — un campo que no aplica al backend activo se oculta o se deshabilita con una nota, nunca se muestra como una perilla que no hace nada en silencio:

  • Backend — el desplegable Storage y el Save Mode. Con un backend en la nube, el Save Mode queda fijado en Asynchronous («Cloud backends are asynchronous by nature.»); con archivos locales, aquí aparece también el toggle Scope By User.
  • LocationFolder, Extension, DataPath. Deshabilitados con un backend en la nube: «Cloud backends store saves per user in the cloud; these fields apply to local files only.»
  • SecurityEncrypted, y el campo de la clave solo con el cifrado activado. Activar el cifrado sin una clave propia avisa: «No key set: a built-in default key SHARED BY EVERY PROJECT is used. Set your own before shipping.»
  • ReliabilityBackup y Strict.
  • VersioningDataVersion.
  • Logging — el desplegable del modo de registro.

Editar aquí es exactamente lo mismo que seleccionar el manager y editarlo en el Inspector; está aquí para que no tengas que cambiar tu selección mientras trabajas. Cada campo se explica en settings.md, y el comportamiento según el backend en storage-backends.md.

La sección Slots on Disk debajo lee las mismas settings, así que cambiar Folder aquí cambia inmediatamente qué archivos lista la ventana.

Saveables in Scene

La sección del medio se ocupa de qué objetos se guardan.

La zona de arrastre

Una caja que dice “Drag GameObjects here to make them saveable”. Arrastra uno o más objetos desde la Hierarchy sobre ella y cada uno recibe un componente BeastySaveable con un id nuevo. Todo el arrastre es un solo paso de deshacer, por muchos objetos que sueltes, y deshacerlo también revierte los ids que se generaron. La ventana se repinta justo después de un deshacer o rehacer, así que la lista que ves siempre está al día.

La zona de arrastre que convierte en saveables los GameObjects que sueltas en ella

Los objetos que ya tienen un BeastySaveable se ignoran, así que puedes arrastrar toda una selección sin preocuparte por duplicados.

Úsala cuando estés configurando una escena y quieras marcar diez objetos a la vez en lugar de usar Add Component diez veces.

Nota La zona de arrastre añade el componente y el id. No marca ningún componente por ti. Selecciona cada objeto y marca lo que quieras guardar en su lista Saved Components — ver más abajo.

La lista

Debajo de la zona de arrastre se lista cada BeastySaveable de la escena abierta, incluidos los de objetos inactivos. Cada fila muestra tres cosas:

La lista de saveables de la escena, con el número de componentes y los ids

  • El objeto en sí, como un campo de objeto. Haz clic para seleccionar el objeto.
  • Cuántos componentes guarda (2 comp.).
  • Su id de guardado.

Esta lista es tu herramienta para auditar la escena. Dos cosas que conviene buscar:

  • Un saveable con 0 comp. — está registrado, está en el archivo de guardado, y no almacena nada. Alguien añadió el componente y nunca marcó nada.
  • Dos filas con el mismo id — un duplicado. El segundo objeto no se registra en absoluto y queda fuera del guardado (se registra un error cuando la escena se ejecuta). Esto suele venir de copiar y pegar un objeto cuyo id fue escrito a mano. Dale a uno de ellos un id diferente. Consulta scene-state.md.

El inspector de BeastySaveable

Al seleccionar un saveable ves su propio inspector, que vale la pena describir aquí porque es donde ocurre el trabajo real:

  • Save Id — el id, editable, con un botón New que genera uno nuevo. Cambiar el id deja huérfanos los datos ya guardados bajo el anterior.
  • Saved Components — una lista de verificación de cada componente en el GameObject. Marca los que quieras en el guardado. Cada uno se etiqueta con la capa que lo convierte: core (siempre disponible), un id de módulo como ugui o physics3d, o dev para un convertidor que registraste tú mismo.
  • Una advertencia cuando marcas un componente que nada puede convertir. Lo dice claramente: SaveAll fallará con TypeUnavailable. Desmárcalo, o lee converter-modules.md.

Slots on Disk

La sección inferior lista los archivos reales en la carpeta a la que apuntan tus settings. Esta es la parte que mantendrás abierta mientras pruebas.

Nota La exploración de slots funciona solo con almacenamiento en archivos locales. Con un backend en la nube activo, la sección lo dice («Slot browsing is available for local file storage only.») — una lista de slots en la nube depende de quién tenga la sesión iniciada, así que no hay una única carpeta que mostrar. Inspecciona los guardados en la nube desde la consola de Firebase; consulta firebase.md.

La sección Slots on Disk con los archivos de guardado y su resumen de metadata

Dos botones en el encabezado:

  • Refresh — vuelve a leer la carpeta. La ventana no vigila el disco, así que después de guardar desde un juego en ejecución, haz clic aquí para ver el archivo nuevo. Nada se cachea entre un refresh y otro.
  • Open Folder — abre la carpeta de guardado en el explorador de archivos de tu sistema operativo. Esta es la forma fiable de encontrar persistentDataPath sin tener que buscarlo. Úsala para abrir un archivo de guardado en un editor de texto, para copiar uno aparte antes de un experimento, o para enviarle uno a un colega.

Si no hay archivos, la sección lo indica (“No save files in the configured folder.”). Si esperabas archivos y no ves ninguno, comprueba Folder y Extension en la sección Manager de arriba — la ventana busca exactamente donde dicen tus settings.

Cada slot

Cada archivo de guardado tiene su fila:

El nombre del slot. El nombre que pasarías a SaveAll, Load o Delete. Sin extensión, sin ruta.

Un resumen de metadatos. El diccionario meta escrito con el guardado, mostrado como hasta cuatro pares key: value unidos con ·, y luego si hay más. Este es el propósito de los metadatos: un nombre de capítulo, un tiempo de juego, un número de nivel, legibles de un vistazo. Los metadatos se quedan en texto plano incluso en un guardado cifrado, así que el resumen funciona esté o no cifrado el archivo, y sin la clave. Consulta slots-and-metadata.md.

Si el archivo no se puede leer en absoluto, el resumen se reemplaza por unreadable: y el error — Corrupt, ParseError, VersionTooNew, etcétera. Eso es un diagnóstico, y los códigos de error se explican en results-and-errors.md.

Restore Backup. Copia el archivo .bak del slot sobre el slot. Pide confirmación primero (“Replace slot ‘x’ with its .bak file?”), y está desactivado cuando no hay .bak — incluso para un slot que solo se ha guardado una vez, porque el primer guardado de un slot no crea backup.

Úsalo cuando un slot se lea como unreadable, o cuando quieras deshacer el último guardado durante las pruebas. El .bak se deja en su lugar después, así que restaurar dos veces es seguro. backups-and-corruption.md explica qué es un .bak y cuándo aparece uno.

Delete. Elimina el archivo de guardado y su backup. Pide confirmación (“Delete save file ‘x’ (and its backup)?”). No hay deshacer — son archivos en disco, no assets en tu proyecto.

Úsalo para volver a un estado limpio entre pruebas. Si quieres conservar el archivo, usa Open Folder y muévelo a otra carpeta.

Ver también