Створення простого ігрового менеджера в Unity
Game Manager у Unity — це центральний сценарій або система, яка наглядає та контролює основну механіку та логіку гри. Зазвичай він керує станами гри (наприклад, початок, пауза, кінець), прогресом гравця, результатами, рівнями та глобальними налаштуваннями. Game Manager має вирішальне значення для забезпечення чіткої структури вашого проекту та уникнення зайвого коду. У цьому підручнику ми створимо базовий Менеджер ігор для обробки стану гри та відстеження результатів.
Крок 1: Налаштування сцени
Для початку підготуйте просту сцену Unity:
- Створіть новий проект Unity 3D.
- Додайте макет базового рівня, наприклад Літак для землі та кілька об’єктів для елементів ігрового процесу.
- Створіть UI Canvas, щоб відображати інформацію, як-от рахунок.
Крок 2: Створення сценарію Game Manager
Менеджер гри буде однокомпонентним, щоб забезпечити його легкий доступ і існування лише одного екземпляра протягом усієї гри. Напишемо сценарій:
- Клацніть правою кнопкою миші на панелі проекту та виберіть Create > C# Script. Назвіть його GameManager.
- Відкрийте сценарій у своєму редакторі коду та замініть його вміст таким:
using UnityEngine;
public class GameManager : MonoBehaviour
{
public static GameManager Instance; // Singleton instance
public int score = 0; // Player's score
public bool isGameActive = true; // Is the game running?
void Awake()
{
// Ensure there is only one instance of GameManager
if (Instance == null)
{
Instance = this;
DontDestroyOnLoad(gameObject); // Persist across scenes
}
else
{
Destroy(gameObject); // Destroy duplicate instances
}
}
// Method to increase the score
public void AddScore(int points)
{
if (isGameActive)
{
score += points;
Debug.Log("Score: " + score);
}
}
// Method to end the game
public void EndGame()
{
isGameActive = false;
Debug.Log("Game Over!");
// Additional logic to handle game over, like displaying UI
}
}
Крок 3: додавання Game Manager до сцени
Тепер давайте додамо Game Manager до сцени:
- Створіть порожній GameObject в ієрархії та назвіть його GameManager.
- Перетягніть сценарій GameManager на GameObject.
- Переконайтеся, що на сцені немає дублікатів GameManager GameObjects.
Крок 4: Оновлення логіки ігрового процесу
Давайте скористаємося Менеджером ігор для керування взаємодією гравців. Наприклад, ми змінимо ігрові об’єкти для взаємодії з Game Manager:
- Створіть новий сценарій під назвою Target для об’єктів, з якими гравець може взаємодіяти.
- Використовуйте такий код для цільового сценарію:
using UnityEngine;
public class Target : MonoBehaviour
{
public int pointValue = 10; // Points awarded for interacting with this target
void OnMouseDown()
{
if (GameManager.Instance.isGameActive)
{
// Add points to the score
GameManager.Instance.AddScore(pointValue);
// Destroy the target
Destroy(gameObject);
}
}
}
Цей сценарій передбачає, що гравець взаємодіє з об’єктами, клацаючи їх. Ви можете адаптувати його до механіки вашої гри, як-от зіткнення чи тригери.
Крок 5: Відображення оцінки
Щоб відобразити рахунок гравцеві:
- Створіть елемент інтерфейсу Text на Canvas і назвіть його ScoreText.
- Створіть новий сценарій під назвою ScoreUI і прикріпіть його до Canvas.
- Використовуйте наступний код, щоб оновити відображення результатів:
using UnityEngine;
using UnityEngine.UI;
public class ScoreUI : MonoBehaviour
{
public Text scoreText;
void Update()
{
if (GameManager.Instance != null)
{
scoreText.text = "Score: " + GameManager.Instance.score;
}
}
}
Перетягніть елемент інтерфейсу ScoreText у поле ScoreText в інспекторі.
Крок 6. Тестування Game Manager
Щоб перевірити свій Game Manager:
- Запустіть сцену та взаємодійте з об’єктами, які використовують сценарій Target.
- Спостерігайте за оновленням результатів в інтерфейсі під час взаємодії з цілями.
- Викличте метод EndGame (наприклад, за допомогою тригера або кнопки), щоб перевірити завершення гри.
Додаткові вдосконалення
Ви можете розширити функціональні можливості Game Manager за допомогою таких функцій:
- Керування рівнями: Завантажуйте нові рівні або скидайте сцену після закінчення гри.
- Таймер гри: Додайте таймер зворотного відліку, щоб кинути виклик гравцям.
- Збереження прогресу: Зберігайте та отримайте прогрес гравця за допомогою PlayerPrefs або системи збереження.
- Меню паузи: Застосуйте меню паузи, щоб зупинити гру та показати параметри.
Висновок
Ми створили простий Менеджер ігор для керування станом гри та відстеженням результатів у Unity. Game Manager централізує основну логіку, роблячи ваш проект більш організованим і масштабованим. Експериментуйте з додатковими функціями, щоб налаштувати Game Manager відповідно до потреб вашої гри.