I know, i can check actor class by node “Class Is Child Of” , putting my Blueprint_1, Blueprint_2, Blueprint_3 sequentally, but how to check is my Actor is child of ANY of blueprints on level?
(If i use “Blueprint” parameter in “Class Is Child Of” it’s not work).
As far as i understand, by this construction, we can check only “is actor a child of InteractiveBP”, and not “is actor child of ANY level blueprint (child of bp1,bp2,bp3, etc)”
By casting:
That’s right. If you want to check multiple BPs, you either need to cast multiple times, or use one common BP parent, and subclass from that.
I need MANUALLY create “one common BP parent”, or in UE4 i can pick some built-in class, which point to “all blueprints”?
Sorry sorry, I misread your post.
So you want to know if your actor ( the one running the code ) is a child of any other actor in the level?
Are these actually child actors, or do you just mean actors spawned in the level?
i.e. I have in my level 3 meshes and 100 blueprints
- mesh1
- mesh2
- mesh3
- blueprint1
- blueprint2
- …
- blueprint100
How AUTOMATICALLY get all actors on level (103) and decide “I have 3 meshes and 100 blueprints”?
I stumbled across this again. I have the same thing. At the moment, I’m going for ‘is not static mesh’…
Or maybe use tags. Yes, you’ll have to manually add a tag to any new blueprint or any non-blueprint added to the level, but you won’t have to cast, so that’s nice =)
There’s for sure a better way to do this in BP’s probably, but I’ve used this for editor BP’s before. You can check if it’s class’ path is within /Game/ or a plugin. That’ll at least filter BP’s you’ve made out from regular static mesh actors and whatever else.
for anyone searching for the C++ solution like i was, here it is:
bool ActorIsBP = false;
if (UBlueprintGeneratedClass* BlueprintGeneratedClass = Cast<UBlueprintGeneratedClass>(Actor->GetClass()))
{
ActorIsBP = true;
}