Fehler bei Funktionen

  • Hallo, ich gucke mir gerade die Programmier Tutorials von docs.unrealengine.com an,
    habe mit dem Programmieren angefangen und komme nicht weiter


    Hier ist der link: https://docs.unrealengine.com/…g/Introduction/index.html


    Weis nicht wo ich die "Default Settings" und die Rechnung für DamagePerSeconds einsetzen soll.
    Bekomme immer eine Fehlermeldung, unten findet ihr die genaue stelle von dem Tutorial und darunter den
    funktionierende Code ohne die "Default und DamagePerSecinds Klassen"




    [Blockierte Grafik: http://2.1m.yt/EqPrlCLmD.png]





    MyActor.h





    MyActor.cpp

  • Ich bin mir nicht ganz sicher was dein Problem ist, allerdings musst du in der .cpp in Zeile 12 die Variable nicht nochmal deklarieren, die steht ja schon in der Headerdatei (dort hast du übrigens das ein "i" kleingeschrieben anstatt wie im Konstruktor groß).


    edit: Wenn du die Berechnung für DamagePerSeconds wie im Tutorial in die PostInitProperties setzen willst, musst du die Funktion dafür natürlich überschreiben und einbinden.

  • Ich bin mir nicht ganz sicher was dein Problem ist, allerdings musst du in der .cpp in Zeile 12 die Variable nicht nochmal deklarieren, die steht ja schon in der Headerdatei (dort hast du übrigens das ein "i" kleingeschrieben anstatt wie im Konstruktor groß).


    edit: Wenn du die Berechnung für DamagePerSeconds wie im Tutorial in die PostInitProperties setzen willst, musst du die Funktion dafür natürlich überschreiben und einbinden.



    Das ab Zeile 11 bis Zeile 16 ist extra in Kommentaren geschrieben da es nicht funktioniert hat.
    Kannst du das kurz einfügen damit ich das Kompilieren kann ? weis nicht was du mit Überschreiben meinst

  • Es funktioniert nicht, weil du die Variable falsch deklarierst. In deiner Header steht:
    float DamageTimeinSeconds;
    anstatt:
    float DamageTimeInSeconds;


    im Konstruktor brauchst du dann nur
    DamageTimeInSeconds = 1.f;
    selbes auch mit anderen Variablen.


    Mit überschreiben meine ich, dass deine Klasse ja eine Unterklasse von AActor ist und somit alle Funktionen von AActor erbt. Einige dieser Funktionen sind als "virtual" deklariert und können so von Unterklassen erweitert bzw. überschrieben werden. Zum Beispiel steht in der AActorklasse die Funktion
    virtual void BeginPlay();


    und du kannst dann in deiner Unterklasse mit
    virtual void BeginPlay() override;


    diese Funktion erweitern bzw. überschreiben. Selbes geht auch mit besagter PostInitProperties.