I am going to give my noob comment. Take it with lots of salt.
Constructor in c++ starts when you place the actor on to the level in editor. But if you need to place the actor on the level in editor then select to assign the material, constructor would not trigger again to assign the material. There are couple of ways you could try to get it to work.
-
Hardcode the material to be assigned in the constructor instead of uproperty.
-
Code setmaterial in OnConstruction function, where changes to the uproperty in the editor will be effected through the function. Only uproperty or ufunction values will be effected in this function (means the value will be brought over to begin play, other non “uproperty/ufunction” values will be reset to original values).