Indholdsfortegnelse

Trin 3: Grafik til én slot

← Forrige: Inventory | Forside | Næste: Inventory-UI →

I dette trin laver du en lille scene, der viser én slot: en ramme med et item-ikon i. Senere bliver den gentaget ni gange i gridet.

Hvorfor en scene til én slot?

Et inventory med 9 slots er ni ens ting. I stedet for at bygge dem ni gange i hånden laver vi én slot-scene og opretter den ni gange med kode. Vil du ændre udseendet på slots, ændrer du det ét sted. Vil du have 12 slots, opretter koden bare 12.

Nye begreber

Opret scenen

  1. Vælg Scene → New Scene, og vælg Other Node. Søg efter PanelContainer, og vælg den som rod.
  2. Omdøb roden til SlotUI.
  3. Højreklik på SlotUI, vælg Add Child Node, og vælg TextureRect. Omdøb den til Icon.
  4. Gem scenen som Scenes/SlotUI.tscn.

Træet skal se sådan ud:

SlotUI (PanelContainer)
└── Icon (TextureRect)

Indstillinger i Inspector

Markér SlotUI (roden):

Sted i Inspector Indstilling Værdi
Layout → Custom Minimum Size x og y 64 og 64
Layout → Mouse → Filter Mouse Filter Stop

Markér Icon:

Sted i Inspector Indstilling Værdi
Expand Mode Expand Mode Ignore Size
Stretch Mode Stretch Mode Keep Aspect Centered
Layout → Mouse → Filter Mouse Filter Ignore

Hvorfor de værdier?

Script til slotten

Højreklik på SlotUI (roden), vælg Attach Script, vælg C#, og sæt stien til Scripts/Inventory/SlotUI.cs. Erstat indholdet med:

SlotUI.cs
using Godot;
 
// SlotUI viser én slot. Den er "dum": den ved ikke, hvilket inventory den tilhører,
// og får bare at vide, hvilket item den skal vise.
public partial class SlotUI : PanelContainer
{
    private TextureRect _icon;
 
    public override void _Ready()
    {
        // Find barnet "Icon" i scenen. Navnet skal stå helt præcist.
        _icon = GetNode<TextureRect>("Icon");
    }
 
    // Viser et item i slotten. Er item null, vises en tom slot.
    public void SetItem(Item item)
    {
        if (item == null)
        {
            _icon.Texture = null;
            TooltipText = "";
        }
        else
        {
            _icon.Texture = item.Icon;
            TooltipText = item.Name;
        }
    }
}

Forklaring:

Tryk på Build.

Test

  1. Kør scenen med F6. Du ser en lille, mørk firkant i hjørnet af vinduet. Det er slotten.
  2. For at se ikonet midlertidigt: Markér Icon, og træk et ikon ind i feltet Texture. Ikonet skal fylde slotten, uden at slotten ændrer størrelse.
  3. Fjern billedet igen (klik på pilen ved feltet, vælg Clear), og gem. Koden sætter selv billedet senere.

Tjekliste

Næste: Inventory-UI →