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.
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.
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.