Variablen BP übergreifend Abrufen und Editieren.

  • Hallo alle miteinander.
    Ich hab ein kleines Problem mit Variablen.


    Ich habe versucht, mir ein Level aus bestimmten Bauteilen zufallsgenieren zu lassen. Das hat ganz gut geklappt bis ich versucht habe ne variable einzubauen die die Räume zählen sollte um zu verhindern das das Lvl bis uns unendliche weiter gebaut wird. aber leider bekomme ich das nicht gescheit hin.


    Ich habe ne Basis, also nen Eingan und sobald das spiel beginnt erstellt er nen weiteren gang. Also hab ich der Basis eine Variable gegeben. Der gespawnte gang hat dann die Funktion dass er immer weiter Gänge spawnt aber vorher halt erkennen soll ob die Variable einen bestimmten wert erreicht hat oder nicht. Wenn die grenze erreicht ist, soll er ein ende bauen und wenn nicht geht es halt immer so weiter.


    Hab mit print text versucht herraus zu finden wo der fehler liegt. Den ersten erstellten gang durch die Base zählt er noch aber die weiteren danach nicht mehr ;(
    Hab mir auch schon x Tutorials dazu angesehen aber ich steig da irgendwie nicht so ganz durch ^^'


    Danke schon mal im vorraus :o

  • Hier erst mal die Base, die von Anfang an im Lvl steht und die dann einen weiteren gang erzeugen soll.
    [Blockierte Grafik: http://www.bilder-upload.eu/thumb/178d5e-1448481977.png]
    http://www.bilder-upload.eu/sh…ile=484ff6-1448482424.png


    Und hier der Gang der danach kommen soll. der checkt dann zuerst die variable und wenn alles inordnung ist baut er nen gang und für 1+ wert zu der variable hinzu für den nächsten gang der gebaut wird :o
    Tut er aber leider nicht. abrufen kann er aber leider nicht hinzu :/
    [Blockierte Grafik: http://www.bilder-upload.eu/thumb/9b0bce-1448482289.png]
    http://www.bilder-upload.eu/sh…ile=81a2fe-1448482454.png

  • Ich gehe mal davon aus, dass Tunnel_1 eine Child Klasse von Tunnel_Base ist.


    Da du ja angegeben hast, dass du keine Programmierkenntnisse hast erklär ich das ganze mal etwas genauer.


    Tunnel_Base hat die Variable Tunnel_Anzahl, erbt eine Klasse von deinem Tunnel_Base erhält auch diese Klasse diese Variable (auf C++ geh ich da mal nicht genauer ein). Spawnst du einen Actor, wird ein Objekt erzeugt, auf Basis seiner Klasse. Jedes Objekt hat aber seine eigene Tunnel_Anzahl Variable, die teilen sie sich nicht. Willst du dass jede Instanz der Klasse die SELBE Variable verwendet, dann brauchst du eine statische Variable. Statische Variablen werden aber (meines Wissens nach) von Blueprints nicht unterstützt, dafür bräuchtest du C++.

  • Was :o da muss es doch ne Möglichkeit geben bei all dem was die ue4 alles kann, nen simplen wert von variable zu variable zu übertragen : /


    Und wenn das nicht der Fall ist was gäbe es für Möglichkeiten das was ich vorhabe umzusetzen.
    Zum beispiel Nen Actor der nen Generierten Dungeon erschafft, und immer die Position vom zuletzt erzeugen Actor abzurufen und da dann einfach dran zu bauen.

  • Ich bin am verzweifeln xD Hab da heute 6 Stunden dran gesessen ohne Erfolg O.o aber immerhin weis ich nun was es mit Blueprintinterfaces auf sich hat ^^


    Hab mir um die 10 - 15 Tutorials angesehen im Internet.
    Alles mögliche von Levelblueprints, Actorblueprints bis hin zu Blueprintinterfaces ausprobiert und ich komme nicht weiter ~.~


    Aus der Call to funktion werde ich irgendwie nicht ganz schlau, in den Tutorials beziehen sie sich immer auf den Spielcharakter, aber irgendwie hilft mir das nicht weiter weil die Levelerstellung komplett nichts mit meinen char zu tuen hat :o
    Ich könnte auch die Variable weglassen und bei jedem bauteil mit na Zufallszahl von 1-50 entscheiden lassen ob danach ende ist, aber dann hab ich da nicht so viel Kontrolle über den Levelaufbau wie ich es gerne hätte und ohne variablen kann ich der Engine nicht mitteilen wie viele Kurven er nach links und nach rechts bauen darf : /


    Wie würde es einer von euch anstellen eine Variable von Blueprint a nach b zu übertragen und diese dann nach bedarf mit a b c d oder f abzurufen? Ich hab das Gefühl das ich da ohne weitere Hilfe und Belehrung nicht weiter komme. Wenn mir da jemand ausführlich erklären könnte was es mit dem Call to auf sich hat und wie man das einsetzt oder mir andere Möglichkeiten nennen kann wie man die Werte übertragen kann, ist er mein Held des Monats ^^'


    Mein Kopf raucht schon xD sitze das seid fast einer Woche dran und hänge immer noch an der Variable fest ~.~


    Danke schon mal im Voraus an alle die sich die Mühe machen mir mit Rat und Tat zur Seite zu stehen oder mir wohl möglich ganz bei dem Problem helfen können.

    • Offizieller Beitrag

    Ich weis nicht, wie weit du das alles in Scene setzen willst, aber ich habe dir hier mal ein zufälliges System gebaut, dass du aber selber verfeinern musst. Denn so spawnen die Räume auch mal in ein anderen Raum, denn es läuft hier unkontrolliert ab. Da muss eine Art Nachfrage eingebaut werden, ob dort gespawnt werden darf, wenn nicht, gehts in die andere Richtung.

  • Genau sowas hatte ich versucht nach meinem letzten Post zu machen. Halt keine Variable für verschiedene Blueprints zu erstellen, sondern alles über einen laufen zu lassen. War mir aber nicht sicher ob Return-value so funktioniert wie ich es gehofft hatte. Aber da du es ja im Beispiel erklärt hast und sogar gleich nen ganzen Blueprint zur Verfügung gestellt hast denke ich das ich auf dem Weg zu meinen Zufällig generierten Dungeon sehr viel weiter voran gekommen bin :3 Ich danke dir vielmals.

  • Ich weis hier ist schon alles geklärt ^^ Aber ich wollte nur nochmal alle wissen lassen das ich so haarscharf davor bin O.o Variablen zu casten und es schon geschafft habe mit so ziemlich jedem link im netzt der dazu was zu sagen hat xD das Problem ist nur... ich steig durch das was ich geschafft habe noch nicht ganz durch O.o und darum erklär ich dass wenn ich es endlich geschafft habe da selbst durchzusteigen X(

    • Offizieller Beitrag

    Dafür muss erstmal dein Widget wissen, welchen Actor du genau meinst. Cast to "Actorname" reicht nicht aus, denn wenn du 100 von diesen Actors hast, weis dein Widget nicht, welchen es ansprechen soll. Somit musst du genau definieren, welchen du meinst. Obwohl das als schwierig erweisen könnte. Du nimmst vor dem Cast to ein GetAllActorOfClass und suchst dort dein Class Actor. Den Array Ausgang verbindest du mit ein Get Array. Da stellst du dein Get Array auf Null. Von diesem Array gehst du auf dein Cast To. Wenn du alles compilierst, wirst du eine Meldung bekommen, dass ein Cast To nicht notwendig ist. Kannst du ignorieren. Oder du kannst auch dein Cast to weglassen. Diese Methode zeigt dir, wie man ein Actor ansprechen kann, aber solltest du mehr als nur einen Actor im Level haben, dann reicht Get 0 nicht, denn Null greift nur den ersten Actor ab. Um den 2. Actor ansprechen zu können, muss man Get 1 erstellen. Nur weis man nicht genau, welcher 0 und 1 ist ^^ Alle Gleichzeitig ansprechen zu können, wird einfacher ^^

    • Offizieller Beitrag

    Dann benötigst du nur ein AllActorsOfClass und ein ForEachLoop. Der Array Element Ausgang ist dein einzelnes Objekt. Somit werden alle deine Objekte angesprochen.


    Hier wäre auch ein Tutorial

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.