Einer Blueprint eine C++ Funktion hinzufügen.

  • Hallo,


    ich habe ein Blueprintprojekt erstellt und möchte einer Blueprint eine C++ Funktion, keine Klasse oder ein Objekt, hinzufügen.

    Ist dieses prinzipiell möglich?

    Wenn ja, wie und wo kann ich dies tun?


    Ich meine, in einem Beispielprojekt die Möglichkeit gesehen zu haben, eine C++ Funktion hinzuzufügen.

    Oder irre ich mich diesbezüglich?


    Eine Funktion deshalb, weil diese, denke ich, auf die bestehenden Variablen in der Blueprint zugreifen kann, oder?


    Falls man keine Funktion erstellen kann, wie könnte dann eine Komponente auf die Variablen zugreifen? Abgesehen von einer Übergabe als Parameter.


    Vielen Dank für eure Hilfe.

  • Geht grundsätzlich. Die C++ Function nennt sich dann UFUNCTION(BlueprintCallable, Category="Kategoriename")


    Der erste Teil in der Klammer macht halt klar dass die Funktion in BP zu sehen ist, der zweite teilt das Ganze in eine Kategorie. Wenn du dann mit Rechtsklick im BP nach dieser Funktion suchst wählst du erst die Kategorie und dann die Funktion aus.

  • Eine Funktion deshalb, weil diese, denke ich, auf die bestehenden Variablen in der Blueprint zugreifen kann, oder?


    Falls man keine Funktion erstellen kann, wie könnte dann eine Komponente auf die Variablen zugreifen? Abgesehen von einer Übergabe als Parameter.

    Direkter Zugriff geht nur, wenn man die Variablen auch in C++ deklariert und dann die C++-Klasse als Parent des Blueprints setz. Ansonsten bleiben nur die Parameter

  • Tomarr:

    Gut zu wissen, besonders das mit der Kategorie, aber wie erstelle ich diese Funktion in der Blueprint im UE-Editor?

    Oder muss ich direkt in den Quellcode der Blueprint und die Funktion dort erstellen?


    freezernick:

    So vermutete ich es bereits.


    Die Blueprints sind genial und faszinierend, dennoch möchte ich manche Sachen lieber direkt in Code realisieren, weil ich da schneller fertig sein werde.

    Blueprints werden doch recht schnell unübersichtlich durch die sich überschneidenden Verbindungen.

  • Gut zu wissen, besonders das mit der Kategorie, aber wie erstelle ich diese Funktion in der Blueprint im UE-Editor?

    Oder muss ich direkt in den Quellcode der Blueprint und die Funktion dort erstellen?

    Randnotiz: Man muss nicht unbedingt eine Kategorie setzten, aber das hilft ungemein.


    Eigentlich hast du zwei Möglichkeiten:


    Entweder du erstellst dir eine C++-Klasse als Parent für deinen jetzigen Blueprint oder du erstellst dir eine Klasse z.B. in Form einer Blueprint Funktion Library mit statischen Funktionen.


    Es gibt oder zumindest gab mal ein experimentelles Source Code Editor Plugin für die Engine, allerdings habe ich das noch nie verwendet und würde auf jeden Fall zu einem externen Editor raten, egal ob Visual Studio oder Visual Studio Code.



    Sofern du das bereits installiert hast, kannst du einfach eine neue C++-Klasse erstellen und da entweder `BlueprintFunctionLibrary` auswählen, oder die Parent-Klasse des aktuellen Blueprints. (Kommt darauf an für welche Variante du dich entscheidest)

    Wenn du z.B. ein Pawn hast, dann müsstest du dort auch Pawn auswählen.


    Dann sollte sich auch schön Visual Studio öffnen und du kannst loslegen. :P



    Anmerkung zur Vollständigkeit:

  • Gut zu wissen, besonders das mit der Kategorie, aber wie erstelle ich diese Funktion in der Blueprint im UE-Editor?

    Oder muss ich direkt in den Quellcode der Blueprint und die Funktion dort erstellen?

    Ich habe es ja noch nicht so sehr ausprobiert, weil C++ mache ich bei der Engine ja nicht. Ich hatte hier nur ein Buch darüber. Aber, wenn ich es richtig verstanden habe, legst du die C++-Klasse an und kannst im Blueprint mit Rechtsklick dann die Kategorie und Funktion auswählen. So wie du jede andere Node im Blueprint dann auch auswählst. Leider bietet das Buch auch nicht viel mehr Informationen, da es eigentlich von BPs handelt. Es wurde halt nur in einem Randkapitel bemerkt, das man die Funktionen erweitern kann über C++.