how to change objects in a blueprint class individually

I am trying to change the material of my blueprint class instances individually but when I change the material of one via a loop through all my instances, it changes the material of all of them. These objects are being created when the level loads. Is there a way I can make the instances specify only themselves when changing their material? I know it’s because they are all tied to the same static mesh, but does that mean I need to make more static meshes so they will all have their own? I’m not sure which would be better or more efficient

[Update]
So I made multiple static meshes and put them in an array. The meshes are of the same thing. I told my blueprint class to add a static mesh component. I have a function that takes the component, the path of the image that I want it to have and the static mesh and creates another material. Even though I made sure everything thing about the static component was different they all still have the same material after it’s done running! Am I doing something wrong?

I think you need to create new material instance for each group of objects that want to look different. Ofcorse if you loop thru all instances, all of them will change

i’ll try that

It kinda of worked. The images flicker back and forth between the old texture and the new one

I changed some more stuff but what you said ultimately worked! Thank you!