Scene Reloading
By default, Scene A Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info
See in Glossary Reloading is enabled. This means that when you enter Play Mode, Unity destroys all existing Scene GameObjects The fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more. A GameObject’s functionality is defined by the Components attached to it. More info
See in Glossary and reloads the Scene from disk. The time it takes for Unity to do this increases with the complexity of the Scene, which means that as your project gets more complex, you have to wait longer between the moment you press the Play button and the moment the Scene fully loads in the Editor.
When you disable Scene Reloading, the process takes less time. This allows you to more rapidly iterate on the development of your project. Instead of reloading the Scene from disk, Unity only resets the Scene’s modified contents. This avoids the time and performance impact of unloading and reloading the Scene. Unity still calls the same initialization functions (such as OnEnable , OnDisable and OnDestroy ) as if it were freshly loaded.
Effects of skipping Scene Reload
To disable Scene Reloading:
- Go to Edit > Project Settings > Editor
- Make sure Enter Play Mode Options is enabled.
- Disable Reload Scene
When you disable Scene Reloading, the time it takes to start your application in the Editor is no longer representative of the startup time in the built version. Therefore, if you want to debug or profile exactly what happens during your project’s startup, you should enable Scene Reloading to more accurately represent the true loading time and processes that happen in the built version of your application.
Disabling Scene Reload should have minimal side effects on your project. However, because Scene Reloading is tightly connected to Domain Reload, there are a couple of important differences:
ScriptableObject and MonoBehaviour fields that are not serialized into the build ( [NonSerialized] , private, or internal) keep their values. This is because Unity does not recreate existing objects and does not call constructors. Additionally, Unity converts null private and internal fields of array/List type to an empty array/List object during Domain Reload and stay non-null for runtime (non-Editor) scripts A piece of code that allows you to create your own Components, trigger game events, modify Component properties over time and respond to user input in any way you like. More info
See in Glossary .
How to Load a Scene or Exit the Game in Unity
If you are making a game, chances are there are several levels in it, with their own layout and logic so you’ll be organizing your game in different scenes. But how do you navigate between scenes? How do you load a scene at runtime in Unity? Also, how can you exit your game?
Well, it’s really simple just follow the steps to become a Pro at Scene Management in Unity.
Include your Scenes in your Build Settings
In order to navigate between scenes, they need to be added to your Build Settings even when you are play testing in the Editor. Go to File > Build Settings to access these settings.
Your Project’s Build Settings Window
Now that the Build Settings window is open, you can add scenes. You can add the currently opened scenes by clicking the “Add Open Scenes” button or, more useful, you can drag and drop scenes from the explorer to the Build Settings window.
Navigating and quitting the game
Scene Management in Unity is handled by the aptly named SceneManagement module. To access it, you simply need to add “using UnityEngine.SceneManagement;” to your script.
This allows you to call the SceneManager.LoadScene function which has 2 overloads:
- Either pass an integer value, which represents the id of the scene as shown in the Build Settings Window
- Or you can use the name of the Scene as a string.
Quitting is also very straightforward: you only need to call Application.Quit()
Procedurally Generated Levels: Reload the Scene!
If you are using procedurally generated content in your game, where a script instantiates everything when the scene is loaded, you are in luck!
The nice trick is simple: you can reload a currently open scene through the SceneManager. This should clean up the scene and load it anew, as if you were navigating to it for the first time.
Невозможно перезапустить сцену в Unity 3D
В моей игре у меня есть несколько уровней, в каждом по 6 сцен, названия сцен: Сцена 1, Сцена 2, Сцена 3 . и т. д.
Когда игрок проигрывает, текущая сцена должна быть перезапущена, поэтому я использовал этот код:
Я не использовал «(. ) GetActiveScene (). Name);» потому что названия сцен повторяются на каждом уровне.
У меня проблема в том, что когда игрок проигрывает на уровне 2 (сцена 6), загружается сцена 6 уровня 1 вместо перезапуска сцены 6 уровня 2. Вы знаете, в чем проблема в моем коде?
Вы уверены, что buildIndex для активной сцены — это ожидаемое число? Что-то могло произойти в конфигурации, чтобы вывести индексы из строя (по крайней мере, это случилось со мной раньше)