I have 4 cars, that a user can choose from, plus 3 AI cars.
Each car has a 512x512 texture.
Is there a way to at the start of the game, combine these into a singled 1024x1024 texture sheet, and use this across all 4 cars?
I assume that I would need to do some sort of Texture2d creation, and then modify the UV offsets and scales of each model.
Is it something that would generate any performance gains?
Texture2D.PackTextures may be the function you are looking for. You are correct in your assumption that you would need to affect the UV offsets and scales, though I wouldn’t say that its necessary for each instance, just per material you make.
The idea you are describing is referred to as texture atlasing, and the gain is that the GPU does not have to keep swapping textures or shaders in and out of memory, which can be expensive. All you would need to do is make sure that the same shader and texture is being used.
Also, take a look at this question.