Inventar Widgets (Gegenstände)

  • Das geht nicht.

    Im Array werden keine Daten gespeichert.

    Ich hab ehrlich gesagt keine Ahnung wie du darauf kommst...

    Ich hab das genau so in meinem letzten Spiel gemacht und mache es auch im neuen so und es klappt, also keine Ahnung wieso es nicht gehen sollte^^


    Vielleicht sollte ich dir noch zeigen, was ein Array ist, nicht dass du wieder mal das falsche darunter verstehst:


    Hier ist es erklärt wie du ein Array erstellst:

    https://docs.unrealengine.com/…erGuide/Arrays/index.html


    Wenn du einfach nur ne Structure hast und diese Variable so verwendest ohne in ein Array zu verwandeln, ist es klar, wieso es nicht geht, außer du machst für jeden einzelnen Inventar-Slot, eine eigene Variable, was bisschen extrem umständlich wäre.

  • Wieso sollte es auch nicht gehen? Genau dafür sind Variablen ja da.

    Ja, normalerweise schon^^


    Ich würde ja gern mal wissen wollen, woher du Exaran weißt, dass man ein Inventar nicht per Array macht...


    Geh mal im Epic Launcher auf den Tab "Erlernen" und scroll dann ganz runter, da gibts ein Projekt mit nem Inventar, ich bin mir ziemlich sicher, dass die das per Array umgesetzt haben:



    Zum speichern brauchst nur ein Savegame zu erstellen, diesem eine Variable mit deiner Inventory_Struct geben, Array daraus machen und dann dein Inventory darin speichern^^


    Beispiel:

    Ich hoffe, ich hab nix vergessen (ungetestet) ^^


    Im Savegame gibts nur deine Variablen die du speichern willst, sonst braucht man dort nichts, wenn man es wie im Beispiel oben macht^^


    Falls du einen kompletten Character in einem Struct speicherst, dann vergiss nicht, alles andere was darin vorhanden ist, auch mit Werten zu füllen, sonst wird alles einfach nur auf 0 gesetzt...



    Hoffe, das hilft, wenn nicht, dann kann ich auch nicht mehr helfen...

  • Nimm nen for loop. Kannst den ja auf ne Taste legen wenn du ihn nicht bei Spielstart anhauen willst. Damit kannst du ja über die Index Werte einstellen wieviel du da reinkippen willst. Mit dem first und last index stellst du ein wie oft der Laufen soll. Also first index 1 last index 25000 dann läuft der 25,000 mal. Damit befüllst du dein struct oder data table, lässt mit jedem loop durchlauf 1 item adden. Wenn du es spannend machen willst nimmst du ne rnd nummer als Wert, dann steht in jedem auch was anderes drin. Am besten mit irgendwas füllen was von der Menge der Daten her realistisch ist, also wenn du sonst nen Namen wie "Das Superschwert der Meister Elfen (Ultra rar)" drinstehen hast solltest du es auch mit ner entsprechend langen string oder zahl zukotzen und nicht nur "0". Machst noch nen print string am Ende, dann siehst du auch wenn es fertig ist und weisst "Ah ok dauert 3 Sekunden das mit 25.000 Schrott Einträgen zu füllen". Dann schaust du mal ob es von der Performance Unterschiede macht gegenüber 3 items. Kannst das ganze ja auch mal kompilieren und schauen wieviel RAM der dann verbraucht mit 25.000 Items gegenüber 3 items (Im Task Manager spicken).

    Habe mal getestet mit 300 Gegenständen (nicht stapelbar) im Inventar und beim öffnet ist ein deutliches ruckeln zu vernehmen. :(

  • Habe mal getestet mit 300 Gegenständen (nicht stapelbar) im Inventar und beim öffnet ist ein deutliches ruckeln zu vernehmen. :(

    Dazu habe ich mal 2 Fragen. Hast du das Inventar geöffnet, und dann wurden in dem Moment 300 Gegenstände per Loop reingepackt, oder gab es bereits 300 Gegenstände?


    Zweite Frage. Kannst du mir mal einen Screenshot von deiner Inventaroberfläche zeigen? Ich würde zu gerne mal wissen wie du dem Spieler 25.000 Gegenstände präsentieren willst und dieser trotzdem nicht die Übersicht verliert.

  • Dazu habe ich mal 2 Fragen. Hast du das Inventar geöffnet, und dann wurden in dem Moment 300 Gegenstände per Loop reingepackt, oder gab es bereits 300 Gegenstände?


    Zweite Frage. Kannst du mir mal einen Screenshot von deiner Inventaroberfläche zeigen? Ich würde zu gerne mal wissen wie du dem Spieler 25.000 Gegenstände präsentieren willst und dieser trotzdem nicht die Übersicht verliert.

    Ja, jedes mal wenn das Inventar geöffnet wird wird der Inhalt geleert und alle Gegenstände im Inventar über ein Loop neu eingelesen.


    Screenshot habe ich dazu noch nicht da es derzeit noch unwichtig ist.

    Vom Prinzip her ist es sehr einfach, man erstellt ein Fenster mit diversen Menüs aus denen man gezielt das auswählt was man benötigt.

    Waffen kommen in die Waffen Kategorie, dort separiert welche Art von Waffe usw. usw.


    So ähnlich wie bei Amazon, da sucht man entsprechend in den Produkgruppen und filtert das ganze heraus.