To do this I had to modify the teleportation system I used to a big extend. I had to add to following functionality :
- De-instance the levels that are not being played.
- And to compensate the telporter has to instantiate the level loaded. This is also very important for performance.
- And thus create a small script that de-instances all the levels beside the lobby on game start.
- Change skybox depending on the level loaded.
But the code of the teleporter is still very clean and compact. The fact that a lot of code is pre-written in Unity helps a lot.
- Trails the player as the player progresses in the level. Floating above the player, making a rain system that covers the entire level is too taxing for performance.
- Displays the correct particles and properties depending on the loaded level.