Dynamic Material Instance Parameter not applied on Play.

In my blueprint construction script, I’m creating a dynamic material instance from my particle system. The particle system only has a single emitter, so index 0 is used. I have a material expression scalar parameter exposed from the material that I’m editing via BP.

This works as expected in the editor. Changing the Emissive parameter modifies the material. However, when I hit play, the value set via BP is not applied to the material. While playing, I can select the BP and see that it still contains the correct Emissive value and if I modify this value it will suddenly kick in and work.

Yeah, that was the first thing I tried. The results are the same with and without doing the parameter adjustment in Begin Play.

maybe try getting the Material variable to set the scalar parameter target, rather than setting it from the return value?

are you sure your Material variable is a type of MaterialInstanceDynamic?

if that doesn’t work, maybe its a problem in your material setup?

From your image above it doesn’t look like you have a Source Material being set on your Create Dynamic Material Instance node.

Can you confirm that you are setting a material on this node?

Also make sure the parameter name is exactly the same, it is case sensitive.

As far as needing to reset this from the Event Begin Play, I have only had this problem with MaterialParameterCollections, instance parameters should not require this. I even have almost the same setup as above working properly (adjusting a scalar value on the material of a particle). Not sure why it is giving you trouble.

Maybe try creating the MaterialInstanceDynamic before setting the value on the particle, I doubt that is the reason but worth a try. :slight_smile:

It works in the editor and it works when adjusting values in a playing level. If those 2 work then the material and parameters are setup correctly. This feels like a bug.