ddu:godot:trin7_opsamling
Indholdsfortegnelse
Trin 7: Opsamling og forslag til udvidelser
← Forrige: Genbrug i en kiste | Forside | Fejlfinding
Du har bygget et fungerende, genbrugeligt inventory-system. Her er en kort opsamling af, hvad du har lært, og nogle ideer til at arbejde videre.
Hvad du har bygget
Item (Resource) ── findes allerede ──► .tres-filer
▲
│ arver
WeaponItem, PotionItem
InventorySlot ◄── ligger i ── Inventory (Node) ◄── barn af ── Player, Chest
▲
│ SetInventory(...)
InventoryUI ── opretter ──► SlotUI (én pr. slot)
- Items er de ressourcer, du allerede havde. Inventoryet bruger dem uden at ændre dem.
- Inventory er en komponent, der kun håndterer data. Den har ingen grafik og kan sidde under hvilken som helst ejer.
- InventoryUI og SlotUI viser data. De får at vide, hvad de skal vise, og kender ikke ejeren.
- Ejerne (
Player,Chest) samler det hele, ogMainforbinder data og UI. - Konfiguration (antal slots, start-items, baggrund, kolonner) ligger i Inspector, så du ændrer systemet uden at ændre kode.
De vigtigste idéer
- Adskil data og visning. Det gør koden genbrugelig og lettere at ændre.
- Brug ressourcer til data, som skal kunne redigeres uden kode.
- Hold regler ét sted. Alt, der handler om at lægge items i slots, står i
Inventory. KunAddItemskal ændres, når reglerne ændres. - Brug [Export] til indstillinger, som du vil kunne ændre uden at åbne koden.
- Test undervejs. Du så resultatet efter hvert trin. Det gør fejl lettere at finde.
Sådan forbereder strukturen stacking
Stacking er ikke implementeret, men strukturen er klar. Disse steder skal ændres, når du selv vil bygge det:
InventorySlothar allerede feltetAmount.Itemskal have et nyt felt, fxMaxStackSize, som fortæller, hvor mange der må ligge i én slot.Inventory.AddItemer det eneste sted, hvor items lægges i slots. Her skal du først lede efter en slot med samme item, som ikke er fyldt, og først derefter tage en tom slot.Inventory.RemoveItemskal sætteAmountned med 1 og først tømme slotten, når den når 0.SlotUIskal have en lille tekst (etLabel) til at vise antallet.
Resten af systemet (InventoryUI, ejerne og Main) skal ikke ændres.
Forslag til udvidelser
- Stackable items: Følg listen ovenfor. Start med
AddItem. - Drag and drop: I stedet for at bruge faste slots kan man trække et item fra én slot til en anden. Godot har indbyggede metoder på Control-noder til det (søg efter drag and drop i Godots dokumentation).
- Brug af items: Giv
Itemen metodeUse(), somPotionItemogWeaponItemoverskriver med hver deres opførsel. Det virker, fordi subtyperne arver fraItem. - Vis og skjul inventoryet: Sæt
VisiblepåUI-laget tiltrueellerfalse, når spilleren trykker på en tast (kræver et input-map i Project Settings → Input Map). - Opsamling af items i verdenen: Lav en scene med et billede og et
Item, som lægger sig i spillerens inventory, når spilleren rører det. - Flere ejere: Lav en fjende eller en butik med et
Inventory. - Gem og indlæs: Gem, hvilke items der ligger i hvilke slots, i en fil.
- Basisklasse til ejere:
PlayerogChester næsten ens. Flyt det fælles til en fælles basisklasse.
Færdig kode
Hele den færdige kode ligger i mappen kode i den zip-fil, du hentede tutorialen i.
ddu/godot/trin7_opsamling.txt · Sidst ændret: af admin
