Rückblick: Item-Datenbank
Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 23 von 50.
Aufgabe
MittelDie Schmiede verkauft Gegenstände aus einer Item-Datenbank, die alle Läden im Spiel gemeinsam nutzen. Schreibe die beiden Asset-Typen und den Shop:
ItemData(in ItemData.cs): ein ScriptableObject mit einem Create-Menüeintrag und den öffentlichen FeldernitemName(ein string) undprice(ein int).ItemDatabase(in ItemDatabase.cs): ein ScriptableObject mit einem Create-Menüeintrag und einem öffentlichen Feld,items, einer Liste von ItemData.Shoperhält ein öffentliches Felddatabasevom Typ ItemDatabase.itemTextzeigt den ausgewählten Gegenstand alsIron Sword: 30 goldan, beginnend mit dem ersten Gegenstand, undgoldTextzeigt das Gold alsGold: 50an.- Der rechte Pfeil wählt den nächsten Gegenstand aus, und nach dem letzten wieder den ersten; der linke Pfeil geht in die andere Richtung, vom ersten Gegenstand zum letzten.
- Mit der Leertaste wird der ausgewählte Gegenstand gekauft. Für einen Gegenstand, den der Spieler bereits gekauft hat, wird
Already owned: Iron Swordausgegeben. Für einen Gegenstand, der mehr Gold kostet, als vorhanden ist, wirdNot enough gold for Iron Swordausgegeben. Andernfalls wird das Gold um den Preis verringert, der Gegenstand gehört dem Spieler, die Texte werden aktualisiert und in der Konsole erscheintBought Iron Sword. - Behalte die gekauften Gegenstände im Shop. Die Assets bleiben unverändert: Die Datenbank wird gemeinsam genutzt, und im Editor überdauert eine Änderung an einem Asset den Play-Modus.
Das Projekt enthält vier ItemData-Assets (Iron Sword 30, Oak Shield 20, Healing Potion 10, Long Bow 45), ein Database-Asset, in dem sie in dieser Reihenfolge aufgeführt sind, und im Inspector ist die Database dem Feld database des Shops zugewiesen. Drücke Play, geh einkaufen und klicke dann auf Check.
Probier es selbst
using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;
public class Shop : MonoBehaviour
{
public TMP_Text itemText;
public TMP_Text goldText;
public int gold = 50;
// Das Datenbankfeld, das Blättern mit den Pfeiltasten und das Kaufen mit Space gehören hierher
}
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