Performance Optimization for 2D game developed using Unity 3D game engine

I have a game with almost 160 sprites in my resources folder. I need 15 randomly selected sprites on each level (there are 7 levels).

I load those sprites which are required e.g. my random generator scripts generate 15 random numbers (completely unique from previously generated 15 numbers) and based on those number I load the sprites (sprites are numbered from 1-158 so I can easily load them).

My levels take some significant time to load, I think that pre-loading the sprites at the start of each level is taking time. There are actually two folders, one for the questions and another for the answers. Each question has 5 possible answers so I actually load 15 * 5 sprites on each level and save them in an array.

NOTE: There are almost thousands of tiles(100px by 100px in size) on each level, I know this also has some impact on performance.

Load all of your sprites before your game starts, in a static class. This way, you only have to load your sprites once, and you can use them for the entirety of your game instance. Something like this:

public static class SpriteData
{
public static Sprite[] Sprites;

{
if (Sprites == null) {
}
}
}


SpriteData.Load();

Sprite sprite = SpriteData.Sprites[1];