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.
Wyzwanie
TrudnyCzęść 1: uzupełnij Inventory; zbieranie jest już gotowe.
- Dodaj serializowalne
ItemStack(itemicountjako publiczne) orazInventoryData(publiczneList<ItemStack> stacks). - Uzupełnij
Count,Add,Remove(stos znika, gdy jego liczba wynosi 0) iDescribe:Wood 3, Plank 1lubempty. - Każda zmiana zapisuje dane w
inventory.jsonwApplication.persistentDataPathi wywołujeChanged;Awakewczytuje 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
1Komponenty, nie hierarchie
Małe komponentyBazowy skrypt przeciwnikaKomponenty abstrakcyjneWspółpracujące komponentyPowtórka: modułowa wieżyczkaPowtórka: podwójne działo4Dane serializowane
Klasy serializowalneListy w InspectorzeEnumy w InspectorzePodsumowanie: tabela łupówPodsumowanie: losowanie łupów2Interfejsy w Unity
IDamageableInterfejsy i TryGetComponentGetComponentsPowtórka: klawisz interakcjiPowtórka: najbliższy w zasięgu5ScriptableObjects
Zasoby danychStatystyki broniWspółdzielone ustawieniaOcal wiatrFale jako danePowtórka: Baza przedmiotówPowtórka: Kupowanie w sklepie8Kod wielokrotnego użytku
Metody rozszerzająceGeneryczny singletonGeneryczne metody pomocniczePodsumowanie: FindNearestPoćwicz samodzielnie: Edytor online Unity