What is the best way to have different colored material on a batch of the same 3D object?

One of my levels is inside an art store so it needs to be bright and colorful. Right now, the shelves are empty as I’m trying to figure out the most efficient way to tackle this. I will be making low poly art supply assets such as craft paint bottles, yarn, t-shirts, all of which has to come in different colors.

My first thought was to just adjust the color in the shaders in the inspector but I realized that it’s going to be a shared texture… Then I thought about using a color swatch as a texture when UV unwrapping in 3ds max but then that would be too many assets to import. As you can tell, I’m still a beginner in Unity.

Hey. Depending on the art style you aim for, there are a few ways to handle this.

I assume you want them to use the same material, since you are looking for batching.

  1. For a simple flat shaded style, go with a single texture that has a color palette and unwrap vertices of each object in the desired color from the palette. - You may have issues with Lightmap, although I think Unity can generate separate lightmap UVs.
  2. Still for a simple flat shaded style (this is what I’d go for), use Vertex Colors. Basically you color your vertices and not use a texture. You will need a vertex color shader, so just google for one. This method is quite primitive, but also super fast, since it doesn’t need memory for the texture and you can use the same material for all objects (make sure you mark objects that you want to batch, that don’t move, as static).
  3. For a bit more detail than 1 and 2, you’ll need to generate texture Atlas. There are Free/Paid assets in the Asset Store that does this for you automatically, so look into it.

Feel free to add me on Discord if you have more questions: Laur#6047