Variable-Wertänderung in Child-Blueprint

  • Hallo liebe Leute,


    ich stehe gerade vor einem kleinen Rätsel und könnte eure Expertise gut gebrauchen. Es geht um Blueprints und das Vererben von Variablen.


    Ich habe ein Blueprint erstellt, in dem ich eine Integer-Variable definiere und diese auf 0 setze. Dann habe ich ein Child dieses Blueprints erstellt und den Wert der Variable dort auf 10 geändert.


    Wenn ich dieses Child direkt in die Welt ziehe, zeigt mir ein Print-String erwartungsgemäß den Wert 10 an.

    Wenn ich aber das Child mit der Node "Spawn Actor From Class" spawnen lasse, zeigt die Variable plötzlich den Wert 0 an.


    Ist das normal? Hat das Parent-Blueprint beim Spawnen immer das letzte Wort, oder übersehe ich da etwas? Wie kann ich sicherstellen, dass die Variable im Child-Blueprint ihren geänderten Wert behält, auch wenn ich es über "Spawn Actor From Class" in die Welt bringe?


    Würde mich über Hilfe und Ratschläge freuen.


    Liebe Grüße

    Lalilu :)

    • Offizieller Beitrag

    Ja das ist Normal. Wenn du das Child (spawnst, oder es in der Welt plazierst, bekommt das Child den Wert seiner Eltern und das wäre in deinem Fall 0


    Damit das nicht passiert, klicke das Parent Blueprint an, gehe auf Eigenschaften und wähle dort die Option "Instance Enable" oder Instance Editable in the Editor" und setze diesen Wert auf "True"


    Das sorgt dafür, dass dein Child Blueprint instanziert wird.


    Du müsstest das auch überprüfen können in dem du die Werte im Blueprint bei "Spawn Actor From Class" prüfst. Dort sollte der Wert dann auch drin stehen. Sofern ich mich nicht täusche.

  • Danke für deine sehr schnelle Hilfe erstmal :)


    Das ist ja gerade das seltsame. Ziehe ich das Child in die Welt, dann hat das child die werte vom Child. Mein "Problem" trat nur beim spawnen auf.


    Aber krass , dass das normal ist. Das heißt ein Blueprint mit 200 Variablen müssen beim Spawn alle einzeln darüber erneut definiert werden? Super umständlich finde ich.

  • Nun, wenn du das so machst, wie du es oben beschrieben hast, dann erstellst du ja eine Child(kopie), welche du dann verwendest. Und dann benutzt du halt DEIN Child.

    Wenn du das über BP machst, dann erstellt er vorher sein eigenes Child vom Parent. Und da ist dein Initialwert halt 0.

    Du kannst aber direkt, nachdem du dein Child im BP gespawned hast, die Variable richtig setzen, zum Beispiel über ein "CAST TO".

    • Offizieller Beitrag

    Aber Lalilu , du hast recht, normal ist das nicht. Habe ich natürlich auch sofort getestet. Die Variablen die in Child geändert werden, werden auch benutzt. Auch beim spawnen. Habe ich mit 5.2.1 getestet. Warum bei dir beim spawnen nicht der richtige wert erscheint, ist mir Rätzelhaft. Evtl ein Bug, was ich nicht glaube, aber du könntest da mit einem neuen actor testen und den zum child machen. Child spawnen lassen und schauen was der printstring ausgibt.