How to check "actor is blueprint or not"?

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;
1 Like