Unity C# — Как сделать перезапуск уровня через 2-3 секунды после смерти персонажа?
Ребята, помогите решить проблему, а то уже голова пухнет. Я только начинаю свой путь в изучении C# и Unity соответственно.
Проблема:
Игрок «исчезает» при соприкосновении с тегом «Enemy» и после этого необходимо сделать рестарт уровня. Я пересмотрел уже сотни статей и видео, ни один предложенный вариант не работает.
На deathplayer привязан Particle system, чтобы при смерти ГГ красиво распадался.
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 .
Restart Current Level
So I have a car game and I have attached a script to the car. It contains a GUI button that leads to the main screen. Below this, I want to include a button that includes a restart CURRENT LEVEL button. I know that I can write an individual script for each level to restart, but is there a way to do it without having a separate script for each level because I have over 30 levels. Here is my script:
Just to add an updated answer to this.
You need to first include
Then, I would create a function, something along the lines of
2 Ответов
- Отсортировать:
Ответ от Lo0NuhtiK · 26/12/11 07:12
the button showed up, but it doesnt restart the level? I Just click it and nothing happens..
Worked fine for me. I just threw this in a script less than a $$anonymous$$ute ago, pushed play, clicked the gui button, and it restarted the level ->
function OnGUI()<