Menu
CoddyTech

Rückblick: Beute auswürfeln

Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 22 von 64.

In diesem Kapitel wurden serialisierbare Klassen, Listen und Enumerationen im Inspector platziert, und die Tabelle der Truhe verwendet alle drei. Jetzt würfelt die Truhe damit.

challenge icon

Aufgabe

Einfach

Sorge dafür, dass die Leertaste die Truhe öffnet und einen Gegenstand entsprechend seiner Gewichtung fallen lässt.

  1. Schreibe public LootEntry Pick(int roll): Durchlaufe table; gib den Eintrag zurück, wenn roll kleiner als sein Gewicht ist, andernfalls ziehe das Gewicht ab. Nach der Schleife: return null;.
  2. Bei Druck auf die Leertaste wähle mit Random.Range(0, TotalWeight()) einen Eintrag aus, spawne dessen prefab 1.5 Einheiten über der Truhe und protokolliere entry.rarity + ": " + entry.itemName.

Drücke auf „Spielen“ und die Leertaste: meistens Common: Apple oder Brot. Drücke dann auf „Prüfen“.

Probier es selbst

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

public enum Rarity { Common, Rare, Epic, Legendary }

[System.Serializable]
public class LootEntry
{
    public string itemName;
    public GameObject prefab;
    public Rarity rarity;
}

public class LootChest : MonoBehaviour
{
    public List<LootEntry> table;

    public int WeightOf(Rarity rarity)
    {
        switch (rarity)
        {
            case Rarity.Common: return 10;
            case Rarity.Rare: return 4;
            case Rarity.Epic: return 2;
            case Rarity.Legendary: return 1;
        }
        return 0;
    }

    public int TotalWeight()
    {
        int total = 0;
        foreach (LootEntry entry in table) total += WeightOf(entry.rarity);
        return total;
    }

    // Pick(int roll) und das Öffnen der Truhe mit Space gehören hierher
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Spielarchitektur in Unity

Übe selbstständig: Unity-Playground