Hi,
ich scheitere grade an meinem, sehr limitiertem Verständnis.
Meine AI-Enemies sollen sich eine Component teilen, die idealerweise die Basics der physical Animations beinhaltet. Funktioniert auch so halbwegs befriedigend.
Aber jetzt will ich meinem zweiten Gegner diese Component anhängen und natürlich caste ich hier zum Owner um das Skeletal Mesh zu bekommen. Was aber wenig nützt wenn mein zweiter Gegner kein "Shooter Bot" ist.
Wie kann man denn so etwas so neutral gestalten um die Component so flexibel wie mgl zu halten?
Cast to owner of component
-
- UE5
- jonnydjango
- Erledigt
-
-
Schwer zu sagen ohne den ganzen Code oder die Component zu kennen. Haben denn die Gegner die gleiche Parent Class? Dann dahin casten. So ganz verstehe ich nicht warum du die component zur Laufzeit hinzufügst - hast du denn auch "ShooterBots" oder andere Gegner ohne die Component? Ansonsten füge die doch direkt zum Bot/gegner zu anstatt zur Laufzeit. Dann kannst du ja auch ne Funktion machen um die Referenz des Skeletal mesh direkt mit festzulegen oder zur Laufzeit einfach vom Parent holen.
-
Was ist denn die "Laufzeit"? Da fängts ja schon an
Ich dachte das wäre gute Praxis (irgendwo gelesen) dass man solche Features, wie hier die physical Animation, in components verpackt, die man dann an di jeweiligen AI-Character verteilt.
Bisher haben alle (beide) meiner Gegner diese Component. Aber ich plane schon dass ich einige ohne dieses Feature haben werde.
Meine Gegner haben beide die selbe Parent Class. Und die wird wohl auch die selbe bleiben. -
ALso du hast ja irgendwo den Blueprint von deinem Enemy, wahrscheinlich ein "Pawn". Wenn du in dem Blueprint die Component hinzufügst ist sie "immer da". Wenn du im "Event Begin Play" die component programmatisch (also per Programmierung) hinzufügst sagt man dazu "zur Laufzeit", weil event begin play beginnt ja erst mit der Laufzeit deines Spiels. Das kann Sinn machen wenn nur bestimmte enemies diese Component haben sollen. Wenn aber immer jeder die haben soll ist es eigentlich eine unsinnige Prozedur - dann solltest du dem Pawn die Component im Blueprint direkt hinzufügen und dir den code sparen. Grundsätzlich ist es von der Performance her besser sich unnötigen code zu sparen und es macht das ganze dann auch übersichtlicher. Und wenn die COmponent bereits im Blueprint hinzugefügt ist brauchst du dir auch kein Bein ausreissen um eine Referenz zu bekommen, du ziehst sie einfach in den Code des Blueprints hinein.
-
Alright, das hilft mir definitiv weiter. Ich werds direkt einbauen.
Vielen Dank!