TGViewer
Akrus Games | Unity Akrus Games | Unity @akrusunity · 2.67K subscribers
Post #836 791
⚡️ Unity: Классы, Наследование — Базовый Арсенет для Логичной Архитектуры

Сохрани — эти два подхода разложат архитектуру твоей игры по полочкам. Понял их — избежишь спагетти-кода, когда игра растёт.

🧱 Классы в Unity — это чертежи твоих объектов
Они описывают, что объект может делать и какие данные хранить. Всё в C# построено на классах. В Unity каждый твой скрипт — по умолчанию класс.

public class Enemy
{
public int health = 100;
public void Attack() { /* Логика атаки */ }
}


🔄 Наследование — Когда «Враг» и «Босс» имеют общее
Зачем копировать один и тот же код? Создай базовый класс и унаследуй от него.

🎯 Вариант 1: Классическое наследование (Иерархия «is-a»)

Идеально, когда у объектов общая логика, но есть специфика.

// Базовый класс для ВСЕХ врагов
public class Enemy : MonoBehaviour
{
[SerializeField] protected int health; // protected — видно в наследниках

public virtual void TakeDamage(int damage)
{
health -= damage;
Debug.Log($"Enemy health: {health}");
}
}

// Конкретный тип врага
public class FlyingEnemy : Enemy
{
public override void TakeDamage(int damage)
{
base.TakeDamage(damage); // Вызов метода из родителя
// Уникальное поведение для летающего врага
if (health < 30) FlyAway();
}
}

➡️ Когда использовать: Чёткая иерархия (например, Enemy → MeleeEnemy / RangedEnemy). Логика общая, но дополняется.

🎯 Вариант 2: Композиция + ScriptableObject (Гибкость «has-a»)

Чаще используется в современных подходах. Разделяй данные и поведение.

// Данные врага вынесены в отдельный объект
[CreateAssetMenu]
public class EnemyData : ScriptableObject
{
public int health;
public int damage;
public GameObject prefab;
}

// Основной класс врага использует данные
public class Enemy : MonoBehaviour
{
public EnemyData data;
private int currentHealth;

void Start()
{
currentHealth = data.health; // Берём данные из ScriptableObject
}
}

➡️ Когда использовать: Нужна быстрая настройка и вариативность (10 типов врагов с разными HP/уроном). Легко балансить игру без изменения кода.

💎 Итог:
• Наследование — строй иерархию «от общего к частному».
• Композиция (использование отдельных классов/данных) — чаще практичнее в геймдеве.
• В Unity MonoBehaviour — уже базовый класс. Твои скрипты наследуются от него.

📌 Правило для инди: Начинай с простого наследования для 2-3 типов врагов. Когда появится 10+ типов с кучей параметров — выноси данные в ScriptableObject.

💬 Твой код больше похож на первый или второй вариант? Делись в комментах!
🔔 Подпишись — дальше разберём интерфейсы и абстрактные классы на реальных примерах из игр.
👉Akrus Games | Unity
  • 🔥 7
  • ❤ 4
  • 👍 1
More from @akrusunity
  1. Sep 29, 2026Чей синьор?
  2. Sep 22, 2026Я добавил релиз(я в начале не догадался, что через консоль можно прикреплять файлы любого…
  3. Sep 21, 2026https://github.com/Akrus001/YoutubeDownloader Я выложил на гитхаб переделанную версию Yout…
  4. Sep 16, 2026Я хотел запустить Youtube Downloader, но... Нейронка это уже исправила и сейчас пытается с…
  5. Sep 13, 2026Сегодня 2**8 день года и это значит что... Сегодня день программиста!!!😎⌨️🧑‍💻 (вайбкоде…
  6. Sep 8, 2026Post #1035
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →