Das Cast To Blueprint....

  • Hallo liebe Community,


    ich habe mich nun seit einiger Zeit, aufgrund von akuter Zeitmangel, nicht mehr blicken lassen. Nun baue ich seit mehreren Wochen an meinem Projekt weiter und verstehe das Blueprintsystem immer besser. Dennoch muss ich sagen, dass mir einige essenzielle Dinge ein völliges Rätsel sind. Wie zum Beispiel der Baustein "Cast To..." Was ich verstehe ist, dass man mit diesem Baustein Informationen eines anderen Blueprints bekommen kann. Was ich allerdings gar nicht verstehe (und ich denke dass ist das Einzige), ist der Input "Object". Was kommt denn an diesen Anschluss? Was entscheidet denn, was da ran kommt? Ich habe schon einige Schaltungen gesehen, bei denen immer wieder etwas anderes in diesem Anschluss steckt.


    Wäre echt schön wenn mir geholfen werden kann :)

  • Kurzgesagt:
    der Cast node sorgt dafür dass man eine Referenz zu einem Object/Actor zu einer Referenz eines höherwertigen Typs umwandelt um zugriff auf die Funktionen und Eigenschaften des höheren Typs zu haben.
    Zeigt die Referenz auf ein Object des neuen Typs oder einer Subklasse davon, so funktioniert es. Zeigt die Referenz die man umwandelt, auf ein Objekt eines anderen Typs so schlägt es fehl.


    Um es genauer zu verstehen sollte man einen Crashkurs Objekt Orientierte Programmierung und Polymorphie (gehört eigentlich dazu) machen. Wikipedia hat dazu bestimmt auch genug um das Konzept zu verstehen.


    BTW die Umwandlung in einen niedrigeren Typ geht Implizit über SET.

  • Ein Beispiel.


    Sagen wir mal du benutzt ein Overlap-Event um zu prüfen, ob sich etwas mit deinem Objekt überlappt.


    Bei diesem Event wird eine Actor-Referenz ausgegeben. Wenn du jetzt wissen willst, ob der überlappte Actor jetzt z.B. ein Character ist, dann kannst du das mittels Cast To Prüfen, und wenn es so ist, bekommst du sogar eine Referenz zu diesem Character. Mit der Referenz kannst du dann auf alle Events/Funktionen und variablen des Characters zugreifen.


    Eine Kurze Anwendung sieht man z.B. hier in meinem 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.

    Ab 20:02

  • Vielen Dank erstmal für eure Hilfe,


    ich habe ehrlich gesagt gar nicht aus euren Texten herauslesen können, wofür dieser merkwürdige Anschluss nun da ist. Ich schätze ich bin zu blöd um das aus den Texten zu verstehen. Ich dachte erst, dass da ein Objekt aus dem gecasteten Blueprint dran muss, damit der Baustein weiß um welches Element es sich genau Handelt, aber anscheinend muss da ein Objekt im selben Blueprint dran.... Ich werde mir heute Abend mal dein Tutorial anschauen, vielleicht bin ich dann schlauer.... Vielen dank dafür :) Momentan macht dieser Anschluss für mich gar keinen Sinn irgendwie...

  • So, ich bin es nochmal. Dank des Tutorials habe ich es nun verstanden! Echt super erklärt. Jetzt frage ich mich, wieso ich nicht schon vorher drauf gekommen bin, weil es eigentlich recht simple ist. Auch an dich Tomura, vielen Dank für deine große Mühe mir das verständlich beizubringen. Jetzt verstehe ich auch deinen Text :)


    Vielen Dank nochmal an euch Beide :)

  • Sorry, aber eine Frage plagt mich dann doch noch. Auch wieder bezüglich des "Object" Inputs.


    Ich weiß, dass wenn man beispielsweise zum eigenen gebastelten Chracter Casten will, dass an diesem Input der Baustein "Get Player Character" , oder zu einem Controller den Baustein "Get Controller", oder zu einer Animation "Get Anim Instance dran angeschlossen werden kann. Aber was schließt man an diesen Input wenn man zu einem Actor Casten möchte? Beispielsweise zu einer Waffe. Ich habe gefühlt schon alles ausprobiert und dennoch kommt immer diese Fehlermeldung:
    'Actor' does not inherit from 'Character' ( Cast To Actor would always fail).

  • Der Cast ist wie schon gesagt eine Typen Umwandlung. Du kannst dabei nur nach oben casten.


    Dein Beispiel mit dem Charakter:
    Der Charakter basiert ja auf Actor. D.h du musst nicht einmal casten, da du schon Zugriff auf alle Methoden und Eigenschaften hast die der Charakter von Actor geerbt hat.
    Der.h. die Charakter Variable weiß dass sie auch ein Actor ist.
    Andersherum: Ein Actor besitzt nicht die Eigenschaften von Charakter und muss nicht zwangsweise ein Charakter sein. D.h. du musst eine Actor Variable in eine Charakter Variable umwandeln, damit diese weiß dass sie ein Charakter ist.


    Wie gesagt wandelst du mit Cast nur den Typ der Variable um, jedoch greifst du immer noch auf dasselbe Objekt zu.


    Wenn du jetzt auf eine Waffe casten willst muss dort eine Variable dran die auf deine Waffe referenziert. Wo du die herbekommst ist deine Sache. Für die Waffe eines Charakters wäre sinnvoll dass du in deinem Charakter eine entsprechende Variable erstellst und setzt wenn du die Waffe erstellst oder dem Charakter gibst.


    Du solltest immer drauf achten dass du irgendwie auf Objekte die du erstellst zugreifen kannst.