Load, UnloadAsset and Instantiate

I am loading prefabs through Resources.Load(“path/prefabName”);
Then I instantiate them when needed.
On exit of a game level I unload the loaded prefabs and destroy the instantiated objects.
A problem occurs when I unload a prefab that has not been instantiated: the original prefab is ruined and using it in the editor causes a crash to desktop.
I am workarounding this instantiating all prefabs but I would like to understand if this is a wrong way to use Resources.Load or it is an actual issue.

Many thanks.

You needn’t explicitly destroy or unload objects at the end of a level since they will be cleared anyway.

Thanks for the suggestion. I am actually not using the Application.LoadLevel function, since I am implementing a loading bar, so I have one scene and I load prefabs from a resource folder and then I instantiate objects by instantiating the loaded prefabs.
On every successful loaded object (in my case a prefab) I move the loading bar ahead.
So far it looks like that I have to instantiate a loaded prefab before unloading it.

Many thanks.