Menu
CoddyTech

Das Neueste zurücknehmen

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 66 von 85.

Das neueste Element einer Liste ist ihr letztes Element am Index Count - 1. Entferne es mit Remove und prüfe zuerst Count > 0: Bei einer leeren Liste gibt es kein letztes Element, und der Zugriff darauf beendet das Skript mit einer ArgumentOutOfRangeException.

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

Wenn du ein Element aus der Liste entfernst, wird das Objekt in der Szene nicht beeinflusst: Blende es selbst aus oder zerstöre es.

challenge icon

Aufgabe

Mittel

Lass die Leertaste die zuletzt hinzugefügte Box entfernen.

  1. Rufe in Update() bei Input.GetKeyDown(KeyCode.Space) und nur dann, wenn boxes.Count > 0 gilt, GameObject newest = boxes[boxes.Count - 1]; ab.
  2. Blende sie mit newest.SetActive(false); aus und entferne sie mit boxes.Remove(newest);.
  3. Protokolliere "Boxes: " + boxes.Count.

Klicke auf „Spielen“, klicke dreimal und drücke dann die Leertaste: Die letzte Box verschwindet. Klicke anschließend auf „Prüfen“.

Probier es selbst

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: Verstecke die neueste Box und entferne sie aus der Liste
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground