Menu
CoddyTech

Stół rzemieślniczy

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

W grze survivalowej stół rzemieślniczy zamienia zebrane przez ciebie surowce w przydatne przedmioty. Dwa przyciski pozwalają zbierać drewno i kamień, a trzy receptury zamieniają je w kolejne przedmioty: z dwóch sztuk drewna powstaje deska, z deski i dwóch sztuk kamienia — siekiera, a z czterech desek — tratwa. Przycisk receptury można nacisnąć tylko wtedy, gdy ekwipunek zawiera wszystkie potrzebne składniki, a wytwarzanie zużywa te składniki. Receptury to dane uzupełniane przy stole w Inspectorze, więc dodanie nowej receptury nie wymaga nowego kodu. Ekwipunek informuje o każdej zmianie wszystkich, którzy nasłuchują, i zapisuje się jako JSON przy każdej zmianie, więc po wyjściu z gry nic nie przepada.

Dwie lekcje pozwolą ci to zbudować. W tej lekcji napiszemy Inventory dla plecaka; receptury stołu pojawią się w następnej.

challenge icon

Wyzwanie

Trudny

Część 1: uzupełnij Inventory; zbieranie jest już gotowe.

  1. Dodaj serializowalne ItemStack (item i count jako publiczne) oraz InventoryData (publiczne List<ItemStack> stacks).
  2. Uzupełnij Count, Add, Remove (stos znika, gdy jego liczba wynosi 0) i Describe: Wood 3, Plank 1 lub empty.
  3. Każda zmiana zapisuje dane w inventory.json w Application.persistentDataPath i wywołuje Changed; Awake wczytuje dane.

Naciśnij „Graj”, zbierz surowce, a potem uruchom grę ponownie: drewno wróci. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

// Tu umieść ItemStack i InventoryData

public class Inventory : MonoBehaviour
{
    public event Action Changed;

    void Awake()
    {
        // Wczytaj inventory.json, jeśli plik istnieje
    }

    public int Count(string item)
    {
        return 0;
    }

    public void Add(string item, int amount)
    {
    }

    public void Remove(string item, int amount)
    {
    }

    public string Describe()
    {
        return "empty";
    }
}

Wszystkie lekcje w sekcji Architektura gier w Unity

Poćwicz samodzielnie: Edytor online Unity