2075 / Unity / 2D / 3D / Шаблони / Одинак (Singleton)
Плюси
Коли хочеться позбутися пошуку, або додавання посилання через редактор
Багаторазовий доступ до центрального скрипта
Перекидання об'єкту в іншу сцену з видаленням дубліката (який там є)
Мінуси
Зайві статичні змінні не дають можливість в майбутньому підміняти код одинака на інший (не дає впроваджувати залежності)
Продавець морозива, як і менеджер, тепер теж може звільнити вашого гравця з роботи
![]()
Гравець public class Player : MonoBehaviour { public static Player Singleton { get; private set; } void Awake() { Singleton = this; } } Кожен монстр public class Enemy : MonoBehaviour { Transform target; void Start() { target = Player.Singleton.transform; } } При зміні сцени, посилання на об'єкт пропаде, через видалення об'єкту В наступній сцені треба знову прив'язати новий об'єкт Новий об'єкт не пам'ятатиме свою позицію та інші поля з минулого рівня
Якщо це контролер, який не видаляється при завантаженні нової сцени Ще й видаляє дублікати. Справжній одинак! public class GameController : MonoBehaviour { public static GameController Singleton { get; private set; } void Awake() { if (!Singleton) { Singleton = this; DontDestroyOnLoad(this); } else { Destroy(gameObject); } } }
- Якщо видалити батька, діти не зможуть передатися в наступну сцену
- Singleton ще називають антипатерном, бо доступ всіх до тебе – порушує принцип інкапсуляції
- Лише після того, як проект стене складнішим – буде зрозуміло, чи це було гарне рішення

Гравець