Що таке DontDestroyOnLoad в Unity C#?
Метод DontDestroyOnLoad використовується для запобігання знищенню об'єкта при завантаженні нової сцени. Це корисно для збереження даних, які повинні залишатися незмінними протягом усього ігрового процесу, таких як налаштування гравця, музика або стан гри.
Цей метод застосовується до об'єкта, до якого прикріплений скрипт. Після виклику DontDestroyOnLoad об'єкт стає «персистентним» і зберігається при переході між сценами. Однак такі об'єкти потрібно контролювати, щоб уникнути дублювання при поверненні до сцен, де вони створювались.
- Застосовується тільки до кореневих об'єктів або об'єктів верхнього рівня.
- Допомагає зберігати дані, такі як рахунок гравця, налаштування звуку, поточний рівень.
- Вимагає уважного управління, щоб уникнути помилок при повторному завантаженні сцен.
using UnityEngine;
public class GameManager : MonoBehaviour
{
void Awake()
{
// Робимо об'єкт незнищенним при завантаженні нових сцен
DontDestroyOnLoad(gameObject);
}
void Start()
{
Debug.Log("Об'єкт GameManager збережено між сценами.");
}
}
У наведеному прикладі скрипт GameManager робить об'єкт, до якого він прикріплений, персистентним. Це може бути корисним для збереження ігрової логіки, яка повинна працювати протягом усього сеансу гри.
Варто пам'ятати, що використання DontDestroyOnLoad збільшує кількість активних об'єктів у грі. Переконайтеся, що ви правильно видаляєте або замінюєте такі об'єкти за потреби, щоб уникнути витоків пам'яті або дублювання логіки.