Hello guys, I need your help.
Sorry for tl;dr, you can jump to questions at the bottom.
I’m working on skill system, each skill is based on object (not an actor, I don’t want them to be spawned on level, they will be more like handlers spawning some particles etc.).
I want to make it easy to use from blueprint (some skills will definitely use this code). Currently I have BaseSkill class that will be used as base by others. Inside a blueprint I want to set class variable (with function taking UClass parameter) in character which will be used to decide which skill can player use. This works fine.
The problem starts when I want to dynamically create skill object without knowing its class, this is just UClass put into variable. I tried some casting, dynamic objects loader, but they just gave me editor crash. I wanted to use also UClass::CreateDefaultObject() but its protected, I don’t think I should change it to public and then changing lot of code in child classes (unresolved exceptions).
So, 2 questions:
- What is the best way to create objects dynamically, knowing only its UClass?
- How can I force variable in C++ to store specific class (or it’s children), not any class like UClass does. In blueprint it’s easy, just setting variable type…
edit:
Ok, i figured out 1st question, this: ConstructObject<UBaseSkill>(classParameter, this); worked… As far as I remember I tried something like this, but this time this works… Then encountered more errors with world context (no idea why UObject dont use this… it crashed me a lot).
Still hoping to see advice about question 2