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.
Aufgabe
EinfachSorge dafür, dass die Leertaste die Truhe öffnet und einen Gegenstand entsprechend seiner Gewichtung fallen lässt.
- Schreibe
public LootEntry Pick(int roll): Durchlaufetable; gib den Eintrag zurück, wennrollkleiner als sein Gewicht ist, andernfalls ziehe das Gewicht ab. Nach der Schleife:return null;. - Bei Druck auf die Leertaste wähle mit
Random.Range(0, TotalWeight())einen Eintrag aus, spawne dessenprefab1.5 Einheiten über der Truhe und protokolliereentry.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
}
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
1Komponenten statt Hierarchien
Kleine KomponentenEin Basis-GegnerskriptAbstrakte KomponentenZusammenwirkende KomponentenRückblick: Modulares GeschützRückblick: Zwillingskanone4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-TabelleRückblick: Beute auswürfeln2Schnittstellen in Unity
IDamageableSchnittstellen und TryGetComponentGetComponentsZusammenfassung: InteraktionstasteZusammenfassung: Nächstes in Reichweite5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenDen Wind speichernWellen als DatenRückblick: Item-DatenbankRückblick: Im Shop einkaufen8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearestÜbe selbstständig: Unity-Playground