Choisir et supprimer un emplacement
Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 34 sur 64.
Ce chapitre a écrit les sauvegardes au format JSON : une classe de sauvegarde [System.Serializable], des fichiers dans Application.persistentDataPath et des initialiseurs de champs qui complètent les éléments manquants dans une ancienne sauvegarde. Le menu des emplacements reçoit maintenant ses deux derniers contrôles.
Défi
MoyenLaisse le joueur choisir un emplacement et le supprimer.
- Dans
Update(), la flèche vers le bas ajoute 1 àselectedet la flèche vers le haut en retire 1, en restant entre 0 et 2 grâce àMathf.MinetMathf.Max. Puis appelleShow(). DeleteSelected()supprime le fichier de l'emplacement sélectionné avecFile.Delete, définit l'emplacement surnullet appelleShow().
Appuie sur « Jouer », remplis l'emplacement 3 et clique sur « Delete » : il affiche « empty ». Puis clique sur « Vérifier ».
Essayez vous-même
using System.IO;
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
public class SlotMenu : MonoBehaviour
{
public TMP_Text[] slotTexts;
private SlotSave[] slots = new SlotSave[3];
private int selected;
void Start()
{
for (int i = 0; i < slots.Length; i++)
{
if (File.Exists(PathFor(i)))
{
slots[i] = JsonUtility.FromJson<SlotSave>(File.ReadAllText(PathFor(i)));
}
}
Show();
}
void Update()
{
// Les flèches permettent de choisir un emplacement
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
if (slots[selected] == null)
{
slots[selected] = new SlotSave();
}
else
{
slots[selected].day++;
slots[selected].gold += 15;
}
File.WriteAllText(PathFor(selected), JsonUtility.ToJson(slots[selected]));
Show();
}
}
// Le bouton Delete appelle cette méthode
public void DeleteSelected()
{
}
string PathFor(int index)
{
return Path.Combine(Application.persistentDataPath, "slot" + (index + 1) + ".json");
}
void Show()
{
for (int i = 0; i < slots.Length; i++)
{
string line = "Slot " + (i + 1) + ": ";
if (slots[i] == null)
{
line += "empty";
}
else
{
line += "Day " + slots[i].day + ", " + slots[i].gold + " gold";
}
if (i == selected)
{
line = "> " + line;
}
slotTexts[i].text = line;
}
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Architecture de jeu dans Unity
1Des composants, pas des hiérarchies
De petits composantsUn script de base pour les ennemisComposants abstraitsDes composants qui fonctionnent ensembleRécapitulatif : tourelle modulaireRécapitulatif : canon double4Données sérialisées
Classes sérialisablesListes dans l’InspecteurÉnumérations dans l’InspecteurRécapitulatif : table de butinRécapitulatif : tirer le butin2Les interfaces dans Unity
IDamageableInterfaces et TryGetComponentGetComponentsRécapitulatif : touche d’interactionLe plus proche à portée5ScriptableObjects
Ressources de donnéesStatistiques des armesParamètres partagésSauver le ventLes vagues comme donnéesRécapitulatif : base de données des objetsRécapitulatif : acheter dans la boutique3Événements
Les événements C# dans UnityS’abonner dans OnEnableChamps UnityEventLes événements pilotent l’interfaceRécapitulatif : fenêtre de succèsRécapitulatif : minuteur de la fenêtre6Sauvegarder avec JSON
JsonUtilitySauvegarder la partieCharger et valeurs par défautRécapitulatif : emplacements de sauvegardeChoisir et supprimer un emplacementEntraînez-vous par vous-même : Playground Unity