I am making a small game in my small game engine made with OpenGL and C++. I am using a static class called ResourceManager in my game which is responsible for loading and returning textures, shaders, audios, etc. It is static so I can get textures, shaders, audios, etc. in any class like player without initializing it and it is super easy to asses it. But what if i want different textures and audios for different levels, I have to carry all the previous level loaded textures and sounds to next level and keep adding them. And I think it is not a good practice. I should load needed textures and audios for that level and when going to next level delete all textures and audios and load new textures and audios for that level. This will keep my memory small. But i can not do this with static classes because they don't have constructor destructor.
Should I use non-static class to handle resources of different level.
I am very confused. Please tell me how i can do that and what I am doing wrong and how game developer solve the issue.
Sorry for very poor English. Thanks for reading.