Fortsetzung der Artikelserie von
Cem Ugur Karacam (Teil 1 kann hier gelesen
werden ).
Dieses Mal erstellen wir zunĂ€chst mehrere Ansichten fĂŒr die Anzeige eines Inventarobjekts und ein Informationsfenster fĂŒr die Anzeige von Objektparametern. Eine Art primitives Inventar. Dann konzentrieren wir uns auf das Inventarfenster und beenden das Statistikfenster im nĂ€chsten Teil.

Mal sehen, woraus unsere Arbeit bestehen wird. Wir mĂŒssen:
- Erstellen Sie visuelle Komponenten fĂŒr Informationen zum Thema und zum Inventar.
- Erstellen Sie ein Fertighaus des Artikels im Inventar.
- Inventar mit Ansichten fĂŒllen;
- Zeigen Sie Informationen in der Konsole an, indem Sie auf die Elementansicht klicken.
Das ist viel. Passen Sie zunÀchst die Bildschirmauflösung an.

Wir werden Unity-UI-Objekte verwenden. Erstellen Sie eine leere ZeichenflĂ€che (klicken Sie mit der rechten Maustaste in das Hierarchiefenster â BenutzeroberflĂ€che â ZeichenflĂ€che).

Als NĂ€chstes erstellen Sie zwei Bereiche - Informationen zum Artikel und zum Inventar.
Wir erstellen auch ein Objekt fĂŒr den Hintergrund, nennen es BG und weisen ihm die Komponente Vertikales Layout zu.



Jetzt werden Hintergrundkinder vertikal ausgerichtet.
Lassen Sie uns ein Panel im Hintergrund erstellen.

In der RectTransform-Komponente legen wir nur die Panel-Höhe auf 300 fest und lassen die Breite automatisch unter der Kontrolle der Vertical Layout-Komponente. Hier sind meine Einstellungen fĂŒr das BG-Objekt:


Jetzt duplizieren Sie das Panel und stellen die Höhe auf 440 ein.

Dann geben wir den Panels die richtigen Namen.

Es sollte so aussehen:

Die Geschichte der Arbeit an einem InfoPanel-Objekt wird im nÀchsten Teil fortgesetzt.
Lassen Sie uns eine Ansicht fĂŒr das Inventarelement vorbereiten und als Fertighaus speichern. Erstellen Sie eine SchaltflĂ€che im Bedienfeld. FĂŒgen Sie dem InventoryPanel-Objekt die praktische Grid Layout Group-Komponente hinzu, um die korrekte Anzeige der Elemente im Inventar zu erhalten.

Nun wird jedes untergeordnete Objekt des Bestandslistenfensters entsprechend den Rastereinstellungen in der Rasterlayoutgruppenkomponente auf dem Bildschirm platziert. Kehren wir zum Button zurĂŒck.

Die SchaltflĂ€che funktioniert nicht richtig, da wir das Raster noch nicht konfiguriert haben. FĂŒgen Sie vorerst das Bildobjekt der SchaltflĂ€che als untergeordnetes Element des Symbols des Elements hinzu und entfernen Sie das Raycast-Ziel-Flag von der Bildkomponente, damit beim Klicken auf das Bild nicht auf die SchaltflĂ€che geklickt wird.

Kopieren Sie nun den Button mehrmals. FĂŒr diese Lektion reichen vier Exemplare. So sollte es aussehen:

Bevor wir fortfahren, mĂŒssen wir ein Skript erstellen, um das Thema darzustellen. Er ist fĂŒr das Speichern von Informationen zum Inventargegenstand selbst verantwortlich und reagiert auf das Klicken auf die SchaltflĂ€che (wir beschrĂ€nken uns vorerst darauf, den Befehl Debug.Log in der Konsole anzuzeigen).
Erstellen Sie ein neues Skript und nennen Sie es
ItemView.
ItemView ist fĂŒr die Datenspeicherung, die visuelle Darstellung, die Klickverarbeitung und den Anfangszustand vor dem Laden der Daten verantwortlich.
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ItemView : MonoBehaviour { public Button button; public Image ItemIcon; private ItemData itemData; }
Erstellen Sie eine Methode zum Festlegen des Anfangszustands.
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ItemView : MonoBehaviour { public Button button; public Image itemIcon; private ItemData itemData; public void InitItem(ItemData item) { this.itemData = item; button.onClick.AddListener(ButtonClicked); } private void ButtonClicked() { Debug.Log(itemData.name); } }
Ich denke, fĂŒr unser Projekt benötigen Sie mehrere Symbole. Ich habe ein kostenloses Kit im Asset Store gefunden. FĂŒgen wir es dem Projekt hinzu.

Jetzt können Sie eine Variable hinzufĂŒgen, die das Symbol fĂŒr das Element in der
ItemData- Klasse
speichert. using UnityEngine; [CreateAssetMenu] public class ItemData : ScriptableObject { public string itemName; public ItemType type; public float attack; public Sprite icon; public float GetPrice() { return attack * 40; } } public enum ItemType { Dagger, Axe, Hammer, Potion }
Jetzt
können wir in
ItemView der Ansicht ein Symbol hinzufĂŒgen.
public void InitItem(ItemData item) { this.itemData = item; itemIcon.sprite = itemData.icon; button.onClick.AddListener(ButtonClicked); }
FĂŒgen Sie der SchaltflĂ€che in der Szene ein Skript hinzu und benennen Sie das Objekt mit der SchaltflĂ€che in Element um. Danach weisen wir ein ImageIcon-Objekt im ItemIcon-Feld zu.

Löschen Sie die verbleibenden drei SchaltflÀchen, da sie zum Konfigurieren des Rasters benötigt wurden, und speichern Sie das Objekt Item als Fertighaus, indem Sie es in das Projektfenster ziehen.

Die PrĂ€sentation ist fast fertig. Wir benötigen 4 Artikel, um das Inventar zu fĂŒllen. Wir werden Symbole fĂŒr die Modelle erstellen und zuweisen, die wir in der vorherigen Lektion erstellt haben.

Fertig Erstellen Sie nun ein
ItemViewController- Skript
. using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItemViewController : MonoBehaviour { public Inventory inventoryHolder; public Transform inventoryViewParent; public GameObject itemViewPrefab; private void Start() { foreach (var item in inventoryHolder.inventory) { var itemGO = GameObject.Instantiate(itemViewPrefab, inventoryViewParent); itemGO.GetComponent<ItemView>().InitItem(item); } } }
Wir haben also einen Link zu dem Inventar, in dem im Projektordner erstellte
ItemData gespeichert sind , einen Link zu
InventoryPanel , um Ansichten als untergeordnete Elemente dieses Bedienfelds zu erstellen, und einen Link zu dem Fertighaus, das die Ansicht des Elements selbst enthÀlt.
Erstellen Sie nun in der
Start- Methode eine Instanz der PrÀsentation des Elements und rufen Sie die
InitItem- Methode auf, um die PrĂ€sentationsdaten mit Daten aus dem Modell fĂŒr jedes Inventarelement zu fĂŒllen.
Erstellen Sie schlieĂlich ein leeres Objekt in der Szene, hĂ€ngen Sie das Steuerungsskript daran an und weisen Sie den erforderlichen Objekten in der Szene VerknĂŒpfungen zu.

Stellen Sie sicher, dass alle Artikel im Inventar zugeordnet sind.

Wir haben ziemlich viel gemacht. Nun wollen wir sehen, wie alles funktioniert.

Elemente erstellt, aber ich habe vergessen, das Textobjekt von der SchaltflĂ€che zu entfernen. In Unity werden SchaltflĂ€chen standardmĂ€Ăig mit Text erstellt. Ăffnen Sie das Fertighaus, das wir im Projekt gespeichert haben, und löschen Sie das Textobjekt. Speichern Sie dann das Fertighaus und kehren Sie zur Szene zurĂŒck.

Jetzt nochmal testen.

Herzlichen GlĂŒckwunsch, alles funktioniert.
Im nÀchsten Teil werden wir uns mit dem Informationspanel befassen.