Inventar

  • Hallo allerseits


    ich bin noch nicht ganz vertraut mit der neuen UE4 da ich vorher ausschließlich mit dem UDK gearbeitet habe. Ich bin momentan noch dabei mich ein bisschen mit der Engine vertraut zu machen, plane aber auch schon mein erstes Projekt damit. Jetzt wollte ich mich gerne schon mal an einem Inventory versuchen, und zwar ein eigenes, welches ich
    persönlich so verändern kann wie ich will - ohne Vorlage. Dazu habe ich erstmal einen simplen Widget Blueprint erstellt der das Inventar später
    anzeigt. Dann habe ich 3 Arrays erstellt: Einen Boolean Array um später abfragen zu können, ob der Slot frei ist oder nicht, und zwei String Slots für den Namen und die Beschreibung des Gegenstandes. Zum Test habeich dann mal zwei Textblöcke auf das Widget gepackt und einen Bind für eine Variable gesetzt der den Text während der Laufzeit ändert.Um einen Gegenstand hinzufzufügen habe ich eine Funktion im Widget erstellt, die die 3 Variablen in das Array schreibt. Leider funktioniertdas nicht soweit. Das Problem hierbei ist entweder, dass nichts in das Array geschrieben wird (vielleicht wegen falscher Referenz), oder das die Daten falsch gelesen werden.


    Vielen Dank schonmal im Voraus, vielleicht erkennt ja hier jemand ob ich was falsch gemacht habe, oder ob ich vielleicht sogar was anders machen soll. Auf jeden Fall wollte ich mich nicht nach irgendwelchen Vorlagen richten...

  • Auch wenn das Thema inzwischen ja schon etwas älter ist trotzdem mal 2 Bemerkungen.
    1. Wenn du dein Inventarwidget ancastest, dann musst du deinem BP schon sagen WAS er denn ancasten soll (auf sc3). Im mom wird das Casten immer Failen, da er versucht ein nicht existentes objekt anzucasten.
    Also entweder mit "Create Inventory" oder wenn es bereits vorhanden ist, dann musste dir die Referenz von dort holen.


    2. Für den Fall dass du das mit dem casten behebst wird nun folgendes Problem sein. Du hast deine Textarray mit einer Länge von 11 Einträgen, du fügst ein neues hinzu ( das Array hat nun 12 Einträge) und du greifst auf das 0te Element zu, was genau so heißt wie du es am Anfang gesagt hast, da dies nicht geändert wurde. Wenn du es verändern willst, dann musst das das mit " Set Element Array" machen.


    Und noch nen Tip. Wenn du zugehörige Elemente hast, wie Name, Beschreibung und Status, die Arrays sind, die alle gleichlang sind, dann mach dir ein "Struct" und bau ein StructArray. So kannst du sichergehen dass du immer die gleichen inhalte bekommst und haste diese schön in einer Structur sortiert. Das macht die ganze Sache übersichtlicher und einfacher.