For my game I want to make a level floor component that is a set of tiles. I want to be able to change those tiles appearances individually.
I.e. one level will start on a checkboard (so, square tiles, black and white). Then I want to make different animations (i.e. make materials flash on some tiles).
What is the best way I can do this? I am currently hopping between C++ and Blueprints so language does not matter.
I have an actor with Instanced Static Mesh - but I do not see how to set materials on individual tiles. Is it supposed to be a single material for all the tiles?
you could leverage Custom Primitive Data to make each instance of the ISM look different. Example. The technique is very efficient but it has its limits. If the materials are fully procedural, the possibilities are almost limitless. But you cannot really dynamically feed instances texture samples, only raw float data.
you could have many ISMc - as many as there are materials. To “change the material”, you’d remove a mesh instance from one ISMc and add it to another ISMc. The material change would be automatic. You can absolutely combine it with the Custom Primitive Data. Think of it as of a Tile Manager actor that creates a bunch of (dynamic) materials, and handles many ISMc.
and finally, have a single ISMc. When an instance tile is interacted with, you remove that instance and replace it with a static mesh.