Blueprint "Set Array Elements"

  • Hallo,


    im Anhang habe ich mal ein Blueprint gepackt.


    Warum muss ich erst die Set-Variabel ausführen und kann nicht gleich ins "Set Array Element" verbinden.

    Wenn ich dieses mache setzt er einfach das Array-Element nicht.

    Ich übergebe an meine Funktion die Inventory-Component und nutze dessen Inventar-Array um dort ein Item zu setzen.


    mit der Set-Inventory klappt es komischerweise sofort ?


    Eigentlich ist es doch das selbe oder ?


    Einfach der Verständis wegen :)


    Lieben Dank

  • Du bist in einem anderen Blueprint. Get Inventory holt dir nur ne Kopie des Arrays. Gut zum auslesen, unmöglich zu ändern. Set gibt dir eine REFERENZ auf das Array des Inventorys (Siehe Target), damit referenzierst du nun auf das echte Inventory array.



    Stell dir das vor als wärst du in deinem Homebanking. Da wäre ein Ausdruck des Bildschirms dann analog zu deinem "Get Inventory". DU kannst in deinem AUsdruck rummalen und Zahlen streichen - das ändert aber den Kontostand nicht.


    Du kannst auch direkt in dein Inventory casten oder dort die Funktion schreiben.

  • Kannst du mal zeigen wie deine Inventar-Componente aufgebaut ist?

    Dieser grüne GetInventory Node irritiert mich etwas.


    Ich habe eine Actor-Componente benutzt und nicht diese Probleme.

    Beachte das ich Size to Fit aktiviert habe da das Element sonst nicht eingefügt wird wenn der Index noch nicht existiert.


    Das zweite ist eine Designfrage.

    Warum ziehst du das Array raus und bearbeitest in einem anderen BP. Wenn du schon eine Componente benutzt dann lege dort auch die entsprechenden Funktionen an um Items hinzuzufügen oder zu finden.


    Hat den Vorteil das jeder Actor, dem die Componente hinzugefügt wird, auch gleich diese Funktionen nutzen kann.

  • Hi, danke für die Erklärung.


    Blueprint und Programmin lernen macht ja echt Laune :)


    Meine Inventory Component ist relativ easy.

    Ich erzeuge nur ein Array und stelle die beiden Funktionen Get Inventory und Set Inventory

    zur Verfügung. GetInventory macht nix weiter, als über die Return Node das InventoryArray zurück zu

    geben. Klar könnte ich gleich die get aus dem Editor nutzen aber so ist es teilweise einfacher für mich.


    Sämtliche anderen Functionen habe ich in einer FunctionLibrary.


    Da später im Game der Spieler Schränke über das Buildingsystem bauen kann, habe ich halt so

    die Möglichkeit jedem Schrank ein Inventar zu geben und über die FuncLib meine Dinge zu

    erledigen. Da ich noch nicht festgelegt bin, wo das Spiel genau hin geht, kann ich so flexibel bleiben.

    Ich kann also z.B. die Function zum austausch von Widgets nicht nur fürs Inventar nutzen sondern auch für die Actionbar usw. ohne jedes mal eine Component zu nutzen.


    Ich bin am Anfang nicht wirklich durch die Verbindung von BP durchgestiegen. Und wieder erst den

    Actor finden durch ein "Cast" usw... :( Echt schwere Kost. Und hatte irgendwie Sorgen die Functions

    in der Component anzusprechen. Obwohl ich es jetzt denke begriffen zu haben. Will aber nicht wirklich alles neu machen.


    Im Moment lerne ich gerade, einfach über ein Interface oder EventDispatcher meine benötigten

    Schritte auszulösen. Ganz neue Wege die sich da eröffnen.... und da ich meine functionen direkt

    ansprechen kann, verstehe ich es etwas besser... klar umständlich, da ich jedes mal meine Variabeln usw. übergeben muss, aber das ist okay für mich. Ich lern ja noch :)


    Gruß Olli