Що таке static в Unity / C#
static - це ключове слово, яке робить змінну, метод або клас спільним для всіх об'єктів
Простими словами: static належить не об’єкту, а самому класу
🔹 Звичайна змінна
public int health = 100;
Кожен об’єкт має своє власне health
Наприклад: у одного ворога 100 HP, у другого 50 HP
🔹 Static змінна
public static int Coins;
Тепер змінна одна для всіх
Якщо її змінити:
Coins += 10;
Значення зміниться глобально
🔹 Як звертатись до static?
Для static не потрібно створювати об’єкт:
GameManager.Coins += 10;
Ми звертаємось прямо через назву класу
🔹 Де це використовується в Unity?
Глобальні дані
public static int Score;
Events
public static event Action OnPlayerDeath;
Singleton
public static GameManager Instance;
Utility методи
public static float CalculateDamage()
{
return 10;
}
🔹 Static method
Static метод можна викликати без об’єкта і він не має доступу до звичайних змінних класу
public static void Print()
{
Debug.Log("Hello");
}
Виклик:
MyClass.Print();
🔹 Важливий нюанс
Static змінні:
• існують весь час поки працює гра
• спільні для всіх об'єктів
Тому з ними потрібно бути обережними
Не потрібно робити майже все static
Через це:
• код стає заплутаним
• з’являється сильна залежність між системами
• важче дебажити
🔹 Простий приклад
Без static: кожен ворог має свої HP
Із static: усі вороги матимуть одне спільне HP. Якщо його змінити у одного ворога, зміниться і у всіх інших
static - це ключове слово, яке робить змінну, метод або клас спільним для всіх об'єктів
Простими словами: static належить не об’єкту, а самому класу
🔹 Звичайна змінна
public int health = 100;
Кожен об’єкт має своє власне health
Наприклад: у одного ворога 100 HP, у другого 50 HP
🔹 Static змінна
public static int Coins;
Тепер змінна одна для всіх
Якщо її змінити:
Coins += 10;
Значення зміниться глобально
🔹 Як звертатись до static?
Для static не потрібно створювати об’єкт:
GameManager.Coins += 10;
Ми звертаємось прямо через назву класу
🔹 Де це використовується в Unity?
Глобальні дані
public static int Score;
Events
public static event Action OnPlayerDeath;
Singleton
public static GameManager Instance;
Utility методи
public static float CalculateDamage()
{
return 10;
}
🔹 Static method
Static метод можна викликати без об’єкта і він не має доступу до звичайних змінних класу
public static void Print()
{
Debug.Log("Hello");
}
Виклик:
MyClass.Print();
🔹 Важливий нюанс
Static змінні:
• існують весь час поки працює гра
• спільні для всіх об'єктів
Тому з ними потрібно бути обережними
Не потрібно робити майже все static
Через це:
• код стає заплутаним
• з’являється сильна залежність між системами
• важче дебажити
🔹 Простий приклад
Без static: кожен ворог має свої HP
Із static: усі вороги матимуть одне спільне HP. Якщо його змінити у одного ворога, зміниться і у всіх інших