Як перезапустити гру в Unity

Перезапуск гри є звичайною функцією в іграх Unity, що дозволяє гравцям скинути стан гри та почати все спочатку. Це корисно в таких сценаріях, як гра закінчена екранами, повторні спроби рівнів або практичні пробіжки. У Unity перезапуск гри зазвичай виконується шляхом перезавантаження поточної сцени, що повертає всі об’єкти та змінні до стандартних станів. У цьому підручнику ми дізнаємося, як реалізувати функцію перезапуску гри за допомогою системи керування сценою Unity.

Крок 1: Налаштування сцени

Почнемо зі створення простої сцени Unity:

  1. Створіть новий проект Unity.
  2. Додайте 3D-об’єкт (наприклад, Cube), щоб представляти гравця або елемент гри.
  3. Налаштуйте деякі ігрові елементи, наприклад перешкоди або колекційні предмети.
  4. Збережіть сцену, перейшовши до Файл > Зберегти як і давши їй назву MainScene.

Крок 2. Імпорт керування сценою

Unity SceneManager використовується для обробки завантаження та перезавантаження сцени. Щоб використовувати його, нам потрібно включити простір імен UnityEngine.SceneManagement у наші сценарії.

Крок 3: Написання сценарію перезапуску

Далі створіть сценарій, який перезавантажить поточну сцену:

  1. У папці Assets клацніть правою кнопкою миші та виберіть Create > C# Script. Назвіть його RestartGame.
  2. Відкрийте сценарій у своєму редакторі коду та додайте такий код:
using UnityEngine;
using UnityEngine.SceneManagement;

public class RestartGame : MonoBehaviour
{
    void Update()
    {
        // Check if the player presses the R key to restart the game
        if (Input.GetKeyDown(KeyCode.R))
        {
            RestartCurrentScene();
        }
    }

    // Method to restart the current scene
    public void RestartCurrentScene()
    {
        Scene currentScene = SceneManager.GetActiveScene(); // Get the current scene
        SceneManager.LoadScene(currentScene.name); // Reload the scene by its name
    }
}

Крок 4: додавання сценарію перезапуску до об’єкта

Щоб зробити скрипт функціональним:

  1. Приєднайте сценарій RestartGame до GameObject на сцені (наприклад, порожній GameObject).
  2. Збережіть сцену та натисніть Play. Під час гри натисніть клавішу R, щоб перезапустити сцену.

Крок 5: Додавання кнопки перезапуску

Для ігор з інтерфейсом користувача можна додати кнопку перезапуску гри:

  1. В ієрархії клацніть правою кнопкою миші та виберіть UI > Button, щоб додати кнопку до вашої сцени.
  2. Налаштуйте текст кнопки так, щоб він казав "Restart", вибравши дочірній об’єкт Text і змінивши його вміст в інспекторі.
  3. Приєднайте сценарій перезапуску до GameObject у сцені, якщо ви цього ще не зробили.
  4. Виберіть кнопку в ієрархії, перейдіть до розділу OnClick у компоненті «Кнопка» та натисніть піктограму +.
  5. Перетягніть GameObject зі сценарієм RestartGame у порожнє поле.
  6. У спадному меню виберіть RestartGame > RestartCurrentScene.

Тепер натискання кнопки під час гри перезапустить гру.

Додатково: скидання прогресу гравця

Якщо ваша гра відстежує прогрес гравця (наприклад, рахунок або здоров’я), переконайтеся, що ці значення скинуто під час перезапуску гри. Наприклад:

using UnityEngine;

public class Player : MonoBehaviour
{
    public int score = 0;
    public int health = 100;

    void Start()
    {
        // Reset score and health on game start
        score = 0;
        health = 100;
    }
}

Переконайтеся, що всі змінні, які потрібно скинути, ініціалізовано в методі Start або у відповідному місці ваших сценаріїв.

Тестування функції перезапуску

Щоб перевірити функцію перезапуску:

  1. Розіграйте сцену та взаємодійте з елементами гри (наприклад, пересувайте гравця, збирайте предмети або втрачайте здоров’я).
  2. Натисніть клавішу R або натисніть кнопку перезавантаження, щоб скинути сцену.
  3. Переконайтеся, що сцена скидається до початкового стану, включаючи всі змінні та об’єкти.

Додаткові вдосконалення

Ось кілька додаткових ідей щодо покращення функції перезапуску:

  • Екран завершення гри: Показує екран завершення гри з опцією перезапуску, коли гравець програє.
  • Вибір рівня: Надає параметри перезапуску поточного рівня або повернення до головного меню.
  • Збереження та завантаження: Інтегруйте функції збереження та завантаження, щоб зберегти прогрес гравця під час перезапуску.
  • Діалогове вікно підтвердження: Додайте діалогове вікно підтвердження перед перезапуском, щоб запобігти випадковому перезапуску.

Висновок

Ми реалізували функцію перезапуску в Unity за допомогою SceneManager. Ця функція дозволяє гравцям легко перезавантажити гру, що робить її основною функцією будь-якої гри. Експериментуйте з кнопками інтерфейсу користувача, спеціальними сценаріями та скиданням прогресу гравця, щоб удосконалити систему перезапуску гри.