Rückblick: Loot-Tabelle
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 18 von 50.
Aufgabe
EinfachEine Schatztruhe lässt jedes Mal einen Gegenstand fallen, wenn du die Leertaste drückst. Schreibe LootChest.cs. Die Szene füllt ihre Beutetabelle im Inspector aus, daher müssen die Namen übereinstimmen:
- Ein Enum
RaritymitCommon,Rare,EpicundLegendary, in dieser Reihenfolge. - Eine Klasse
LootEntry, die der Inspector anzeigen kann, mit einem StringitemName, einem GameObjectprefabund einer Rarityrarity, sowie an der Truhe einer öffentlichenList<LootEntry>namenstable. Die Tabelle der Szene enthält den Apple und das Bread (Common), den Silver Ring (Rare), das Dragon Egg (Epic) und die Golden Crown (Legendary), in dieser Reihenfolge. public int WeightOf(Rarity rarity)gibt das Gewicht eines Eintrags anhand seiner Seltenheit zurück: Common 10, Rare 4, Epic 2, Legendary 1.public int TotalWeight()summiert die Gewichte der gesamten Tabelle.public LootEntry Pick(int roll)durchläuft bei einem Wurf von 0 bis, aber nicht einschließlich,TotalWeight()die Tabelle der Reihe nach; jeder Eintrag umfasst so viele Würfe wie sein Gewicht: Die Würfe 0 bis 9 ergeben den Apple, 10 bis 19 das Bread, 20 bis 23 den Silver Ring und so weiter.- Beim Drücken der Leertaste wird einmal
Random.Range(0, TotalWeight())aufgerufen, der entsprechende Eintrag ausgewählt, sein Prefab 1.5 Einheiten über der Truhe erzeugt und seine Seltenheit und sein Name protokolliert, etwa alsRare: Silver Ring.
Drücke Play, öffne die Truhe ein paar Mal und klicke dann auf Check.
Probier es selbst
using System.Collections.Generic;
using UnityEngine;
public class LootChest : MonoBehaviour
{
}
Alle Lektionen in Spielarchitektur in Unity
1Komponenten statt Hierarchien
Kleine KomponentenEin Basisskript für GegnerAbstrakte KomponentenKomponenten im ZusammenspielRückblick: Modularer Geschützturm4Serialisierte Daten
Serialisierbare KlassenListen im InspectorEnums im InspectorRückblick: Loot-Tabelle7Zustandsautomaten
Zustände als KlassenEin ZustandsautomatÜbergängeGegner-KIWiederholung: Türzustände10Projekt: Arena-Überlebenskampf
Der HeldGegnertypen2Interfaces in Unity
IDamageableInterfaces und TryGetComponentGetComponentsRückblick: Interaktionstaste5ScriptableObjects
Daten-AssetsWaffenwerteGemeinsame EinstellungenWellen als DatenRückblick: Item-Datenbank8Wiederverwendbarer Code
ErweiterungsmethodenEin generisches SingletonGenerische HilfsmethodenRückblick: FindNearest