Strukturen zu einer Array machen?

  • Hi zusammen.


    Kurze Frage. Gibt es eigentlich eine Möglichkeit aus einer Struktur ein Array zu machen?


    Meine Idee ist folgende. Ich habe eigentlich ein Array aus 24 Bools. Wenn ich die im BP direkt als Array anlege, kann ich diese aber nicht einzeln benennen. Bei einer Struktur kann ich sie zwar einzeln benennen, aber habe kein Array.


    Gibt es also eine Möglichkeit, die Benennung im Array beizubehalten?

  • Kurze Frage. Gibt es eigentlich eine Möglichkeit aus einer Struktur ein Array zu machen?

    Ja, wie bei jedem anderen Datentyp auch.


    Meine Idee ist folgende. Ich habe eigentlich ein Array aus 24 Bools. Wenn ich die im BP direkt als Array anlege, kann ich diese aber nicht einzeln benennen. Bei einer Struktur kann ich sie zwar einzeln benennen, aber habe kein Array.

    Klingt als ob der Map-Datentyp der richtige ist. Da hast du ein Key/Value Paar.

  • Na so einfach scheint es nicht zu sein. Wenn ich das Ganze in einen Make Array packe, habe ich genau einen Eintrag, nämlich die Structure. Und auf eine Structure kannst du auch keinen Loop anwenden, sodass ich ihn dann splitten könnte.

    Mit einem For Each Loop sollte es gehen. Von dort aus kannst du über das Array Element die Daten per Set members sezten. Den jeweiligen Eintrag holst du dir über den Name in set members (Achtung: Das setzt die Daten in einer Copy der Structure)


    Du kannst auch per get copy oder get reference ins Array und dort set members - selbes Prinzip wie oben: nur die reference setzt die Daten direkt in die Structure

  • Was genau ist denn dein Use-case? Vielleicht wäre eine BitMask besser als ein Array, wenn du eh nur bools hast?

    Bitmask Blueprint Variables
    Blueprint integer variables can be declared as bitmasks to store binary flags in a more compact fashion.
    docs.unrealengine.com


    Vorteile:

    • Sehr einfache Datenstruktur (Integer, statt Array)
    • Setzen von mehreren Bits auf einen Schlag ist einfach
    • Benennung der Einzelnen Bits über Unreal Enums
    • ForEach Iterator für den Enum der die Bits benennt wird von Blueprint generiert

    Nachteile:

    • Ungewohnt für High-Level Programmierer (bit-wise zeug ist eher etwas womit sich low-level Programmierer auseinandersetzen, die Hardwarenahen Code schreiben), somit komplexer zu lesen und komplexer sich einzudenken.



    Das letzte Beispiel könnte falsch sein, habe in unsigned int gedacht, weiß nicht genau was im Hintergrund passiert bei UE5, aber sollte sich rausfinden lassen.


    Das hier wäre die sichere Variante bei der man gegen einen 0000000... usw. prüft

  • Ja ne. Es ging mir nur um einen Wegweiser. Dachte ich hätte es hier auch schon erklärt, war aber wohl ein anderer Thread.

    Ich hatte ein Schild/Wegweiser gebaut. Da ich aber nicht für jede Weggabelung ein extra Modell oder so machen wollte, habe ich einfach einen Pfahl genommen und da 24 Richtungsweiser drangeklebt im Actor. Und dann wollte ich das Schild einfach in den Level flanschen und dann eben halt angeben, welche Richtungen sichtbar sein sollen, also N, NW, W, SW, S usw.

    Funktioniert halt auch so, wenn ich da 24 boolsche Variablen in den Actor packe, dachte halt nur, dass ich es vielleicht auch sauberer hinbekomme, wenn ich eine Struktur schreibe und diese dann mit Namen einfach in den Actor packe.

    Allerdings, so viel sauberer ist es ja auch nicht.