Menu
CoddyTech

Rückblick: Item-Datenbank

Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 23 von 50.

challenge icon

Aufgabe

Mittel

Die 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 Feldern itemName (ein string) und price (ein int).
  • ItemDatabase (in ItemDatabase.cs): ein ScriptableObject mit einem Create-Menüeintrag und einem öffentlichen Feld, items, einer Liste von ItemData.
  • Shop erhält ein öffentliches Feld database vom Typ ItemDatabase. itemText zeigt den ausgewählten Gegenstand als Iron Sword: 30 gold an, beginnend mit dem ersten Gegenstand, und goldText zeigt das Gold als Gold: 50 an.
  • 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 Sword ausgegeben. Für einen Gegenstand, der mehr Gold kostet, als vorhanden ist, wird Not enough gold for Iron Sword ausgegeben. Andernfalls wird das Gold um den Preis verringert, der Gegenstand gehört dem Spieler, die Texte werden aktualisiert und in der Konsole erscheint Bought 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