Repaso: ranuras de guardado
Parte de la sección Arquitectura de juegos en Unity del Journey de Unity de Coddy. Lección 27 de 50.
Desafío
IntermedioUn juego de granja tiene tres espacios de guardado, cada uno en su propio archivo: slot1.json, slot2.json y slot3.json en Application.persistentDataPath. Escribe SlotSave y SlotMenu:
SlotSave(en SlotSave.cs) es una clase[System.Serializable]con los campos públicosdayygold. Una granja nueva empieza en el día 1 con 20 de oro, y una partida guardada de una versión anterior que no tenga un valor obtiene ese mismo valor inicial.- Cuando se inicia el juego, el menú carga todos los espacios que tengan un archivo. Se selecciona el espacio 1; la flecha abajo selecciona el espacio siguiente y la flecha arriba el anterior, sin pasar del espacio 3 ni del espacio 1.
- Los tres
slotTextsmuestran cada espacio comoSlot 2: Day 4, 65 goldoSlot 2: empty, y la línea del espacio seleccionado empieza con>, como en> Slot 1: empty. - Al pulsar Espacio en un espacio vacío, se inicia una granja nueva allí. Al pulsar Espacio en un espacio ocupado, se juega un día: el día aumenta en 1 y el oro en 15. En ambos casos, el espacio se guarda en su archivo.
- El botón Delete llama a
DeleteSelected(), que elimina el archivo del espacio seleccionado y lo vacía.
Pulsa Play, inicia una o dos granjas y juega algunos días; después, pulsa Stop y Play de nuevo. Luego, pulsa Check.
Pruébalo tú mismo
using System.IO;
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
public class SlotMenu : MonoBehaviour
{
public TMP_Text[] slotTexts;
// El botón Delete llama a este método
public void DeleteSelected()
{
}
}
Todas las lecciones de Arquitectura de juegos en Unity
1Componentes, no jerarquías
Componentes pequeñosUn script base para enemigosComponentes abstractosComponentes que trabajan juntosRepaso: torreta modular4Datos serializados
Clases serializablesListas en el InspectorEnumeraciones en el InspectorRepaso: tabla de botín7Máquinas de estados
Estados como clasesUna máquina de estadosTransicionesCerebros de enemigosRepaso: estados de puertas10Proyecto: Superviviente de la arena
El héroeTipos de enemigos2Interfaces en Unity
IDamageableInterfaces y TryGetComponentGetComponentsRepaso: tecla de interacción5ScriptableObjects
Recursos de datosEstadísticas de armasConfiguración compartidaOleadas como datosRepaso: base de datos de objetos3Eventos
Eventos de C# en UnitySuscribirse en OnEnableCampos de UnityEventLos eventos controlan la interfazRepaso: ventana emergente de logro6Guardar con JSON
JsonUtilityGuardar la partidaCargar y valores predeterminadosRepaso: ranuras de guardado