Say I have an actor with 3 attached StaticMeshActors. I want to 'modify' the materials for all of them at runtime, in a blueprint, for example changing the opacity.

I could get the attached actors, and RorEach create a new Dynamic Material Instance with a modified opacity. However, if two of the meshes are using the same material, I'm doing unnecessary work. This is fine with 3 meshes and a single duplicate material, but not fine with 1500 meshes using 100 materials.

What I really want to do is:
* Find all the attached actors.
* Find the set of materials they use.
* Create a dynamic instance for each material in the set.
* Override the material for each attached actor, using a map from original material to the dynamic instance for it.

Is this possible using Blueprint Scripting?