Menu
CoddyTech

Powtórka: baza danych przedmiotów

Część sekcji Architektura gier w Unity ścieżki Unity w Coddy. Lekcja 23 z 50.

challenge icon

Wyzwanie

Średni

Kuźnia sprzedaje przedmioty z bazy danych, z której będą korzystać wszystkie sklepy w grze. Napisz dwa typy zasobów oraz Shop:

  • ItemData (w pliku ItemData.cs): ScriptableObject z pozycją w menu Create i publicznymi polami itemName (typu string) oraz price (typu int).
  • ItemDatabase (w pliku ItemDatabase.cs): ScriptableObject z pozycją w menu Create i jednym publicznym polem items, czyli listą elementów ItemData.
  • Shop ma publiczne pole database typu ItemDatabase. itemText wyświetla wybrany przedmiot jako Iron Sword: 30 gold, zaczynając od pierwszego przedmiotu, a goldText wyświetla liczbę sztuk złota jako Gold: 50.
  • Strzałka w prawo wybiera następny przedmiot, a po ostatnim ponownie pierwszy; strzałka w lewo działa w przeciwnym kierunku — od pierwszego przedmiotu do ostatniego.
  • Spacja kupuje wybrany przedmiot. Jeśli gracz już kupił dany przedmiot, w logu pojawi się Already owned: Iron Sword. Jeśli przedmiot kosztuje więcej niż gracz ma sztuk złota, w logu pojawi się Not enough gold for Iron Sword. W przeciwnym razie liczba sztuk złota zmniejsza się o cenę, przedmiot zostaje dodany do posiadanych, teksty zostają zaktualizowane, a w konsoli pojawia się Bought Iron Sword.
  • Przechowuj zakupione przedmioty w Shop. Zasoby pozostają bez zmian: baza danych jest współdzielona, a w edytorze zmiana zasobu zachowuje się po zakończeniu trybu Play.

Projekt zawiera cztery zasoby ItemData (Iron Sword 30, Oak Shield 20, Healing Potion 10, Long Bow 45), zasób Database, w którym są one wymienione w tej kolejności, oraz pole Database przypisane przez Inspektor do pola database w Shop. Naciśnij Play, zrób zakupy, a następnie naciśnij Check.

Spróbuj swoich sił

using UnityEngine;
using UnityEngine.InputSystem;
using TMPro;

public class Shop : MonoBehaviour
{
    public TMP_Text itemText;
    public TMP_Text goldText;
    public int gold = 50;

    // Tutaj umieść pole bazy danych, przeglądanie za pomocą strzałek i kupowanie za pomocą Space
}

Wszystkie lekcje w sekcji Architektura gier w Unity