#10 Change Scenes at runtime in Unity. LoadScene Method


This arti­cle is part of an old­er video series, I have cre­at­ed a use­ful solu­tion that allows you to load any scene with a but­ton just know­ing the name of the scene and you can reuse this solu­tion just drag­ging a script to a but­ton and chang­ing the name of the scene you want to load.

Go to the new solution

Here I explain how this solu­tion works:

How to LOAD Scenes with name in UNITY







This is the last exer­cise in Unity's Fun­da­men­tal Series, in this arti­cle we're going to see how to change the scene in Uni­ty at runtime.

Under­stand­ing how to change the scene is impor­tant because it allows us to sep­a­rate the con­tent of our game into parts, for exam­ple the main menu on one side and the game itself on the oth­er. Anoth­er exam­ple could be a vil­lage with dif­fer­ent build­ings in which you can enter, the vil­lage can be built in a scene and then use mul­ti­ple scenes for each build­ing, or use a scene for all build­ings and choose the appro­pri­ate one at the time of load­ing the scene.

Go to the project’s main page

Before we start I invite you to watch the video I made to sum­ma­rize this arti­cle. Eng­lish Sub­ti­tles available.

Maybe you find it useful…

I invite you to see this arti­cle and its respec­tive video on how to achieve a Fade In / Fade Out effect in Uni­ty, you can apply this to what we see in this arti­cle to achieve a change of scene not abrupt.


Fade In — Fade Out Effect for Unity


Scenes in Unity 

Each scene in Uni­ty con­tains its own hier­ar­chy of GameOb­jects, depend­ing on our needs we can use them in dif­fer­ent ways.

Some sim­ple exam­ples of using scenes are using one scene for the menu and anoth­er for the game, each scene is a lev­el of our game, do every­thing in a sin­gle scene, etc..

In our projects we prob­a­bly have to make changes of scene, that's why I con­sid­er it part of one of the fun­da­men­tal things of Unity.

GameDevLab LoadScene Station

To learn how to change a scene in Uni­ty we're going to use GameDevLab's Load­Scene sta­tion, which con­sists of a strange well that looks like it dis­in­te­grates mat­ter and sends it through space-time.

Fig. 1: Front view of Load­Scene station.
Fig. 2: Inside the well of the Load­Scene station. 
Fig. 3: Inside the well of the Load­Scene station. 

At the bot­tom of the well there is a cap­sule (fig­ure 4) that has a Col­lid­er assigned in trig­ger mode and a Script that will detect the char­ac­ter and send a mes­sage to the Script that we have to complete.

game object calling function to load a scene in unity
Fig. 4: At the bot­tom there is a cap­sule with Col­lid­er in trig­ger mode.

The com­plete sta­tion is con­tained in the GameOb­ject "#10 Load­Scene" of the hier­ar­chy, this GameOb­ject is assigned the Script "Load­Scene" which is the Script we have to com­plete in this exercise.

hierarchy of a project in unity
Fig. 5: Project hierarchy.
gameobject components, the loadscene script is used to load a scene into unity
Fig. 6: Load­Scene sta­tion components.

The Script to com­plete con­tains a sin­gle pub­lic method called "tele­port", this method will be exe­cut­ed by the cap­sule Script when the char­ac­ter is detect­ed at the bot­tom of the well.

If it is not clear what a method is in my chan­nel there is a video in which I talk about meth­ods in pro­gram­ming (eng­lish sub­ti­tles avail­able) and there is also an arti­cle in the pro­gram­ming sec­tion of this page.

blank script to complete
Fig. 7: Load­Scene script to complete.

What we are going to do is change the scene with­in the method "tele­port", for this we go to the fold­er scenes of the pack of the fun­da­men­tal series and we see that there are two scenes (fig­ure 8), one is the GameDe­vLab and the sec­ond scene is GameDe­vDi­men­sion, the lat­ter is the one we are going to load using its name.

two scenes from a project in unity
Fig. 8: Scenes from the project, GameDe­vLab and GameDevDimension.


To start with we have to import the name­space UnityEngine.SceneManagement

Fig. 9: Import­ed libraries at the top of the script. 

Then to change the scene in Uni­ty we exe­cute a sta­t­ic method of the "Scene­M­an­ag­er" class, the Load­Scene method, to which we pass as para­me­ter a String with the name of the scene we want to load.

Fig. 10: Method to change the scene in Unity. 

With that sim­ple instruc­tion we can make the scene change, but for this to work all the scenes have to be added to the com­pi­la­tion, this we do in File > Build Set­tings, open­ing each scene and click­ing Add Open Scenes.

compilation configuration window in unity
Fig. 11: Scenes are added in Build Settings.

When the char­ac­ter falls into the pit a new scene is loaded in which the cam­era auto­mat­i­cal­ly advances and the con­trols are dis­abled, when the cam­era reach­es the end of the tun­nel the GameDe­vLab scene is auto­mat­i­cal­ly loaded again.

Fig. 12: Enter­ing game mode and falling into the pit loads the GameDe­vDi­men­sion scene.

Fig. 13: Tun­nel view of the GameDe­vDi­men­sion scene.

Fig. 14: Tun­nel view of the GameDe­vDi­men­sion scene. 

Fig. 15: Tun­nel view of the GameDe­vDi­men­sion scene. 


To change a scene in Uni­ty we need to import the Uni­tyEngine Scene­M­an­age­ment library and use a sta­t­ic method of the Scene­M­an­ag­er class.

We can refer to a scene by its name or by its iden­ti­fi­ca­tion code that appears in Build Set­tings, in this case we use the name. 

Load­ing a new scene is a rel­a­tive­ly sim­ple task, the prob­lem is that the new scene is pre­de­fined and always starts from scratch. 

For exam­ple a scene can be a house with ten coins, the char­ac­ter enters, takes the coins and leaves the house, ie returns to the pre­vi­ous scene. If we do noth­ing about it, when we re-enter the house scene the ten coins will be inside again. 

To pre­vent this we have to store infor­ma­tion of the state of the vari­ables in the scene and read this infor­ma­tion at the begin­ning of the scene.

Scroll to Top
Secured By miniOrange