Menu
CoddyTech

Récupérer le plus récent

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 66 sur 85.

L’élément le plus récent d’une liste est le dernier, à l’index Count - 1. Retire-le avec Remove et vérifie d’abord que Count > 0 : dans une liste vide, il n’y a pas de dernier élément, et tenter d’y accéder arrête le script en déclenchant une ArgumentOutOfRangeException.

if (coins.Count > 0)
{
    GameObject last = coins[coins.Count - 1];
    coins.Remove(last);
    Destroy(last);
}

Retirer un élément de la liste ne touche pas à l’objet dans la scène : masque-le ou détruis-le toi-même.

challenge icon

Défi

Moyen

Fais en sorte que la barre d’espace supprime la boîte la plus récente.

  1. Dans Update(), lorsque Input.GetKeyDown(KeyCode.Space) est vrai et uniquement si boxes.Count > 0, récupère GameObject newest = boxes[boxes.Count - 1];.
  2. Masque-la avec newest.SetActive(false); et supprime-la avec boxes.Remove(newest);.
  3. Affiche "Boxes: " + boxes.Count dans le journal.

Clique sur « Jouer », clique trois fois, puis appuie sur la barre d’espace : la dernière boîte disparaît. Puis clique sur « Vérifier ».

Essayez vous-même

using System.Collections.Generic;
using UnityEngine;

public class BoxStacker : MonoBehaviour
{
    public GameObject boxPrefab;
    List<GameObject> boxes = new List<GameObject>();

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 spot = transform.position + new Vector3(boxes.Count * 1.5f, 0, 0);
            GameObject box = Instantiate(boxPrefab, spot, Quaternion.identity);
            boxes.Add(box);
            Debug.Log("Boxes: " + boxes.Count);
        }

        // Space : masquer la boîte la plus récente et la retirer de la liste
    }
}

Toutes les leçons de Les bases du scripting dans Unity

Entraînez-vous par vous-même : Playground Unity