⚡️ Unity: Классы, Наследование — Базовый Арсенет для Логичной Архитектуры
Сохрани — эти два подхода разложат архитектуру твоей игры по полочкам. Понял их — избежишь спагетти-кода, когда игра растёт.
🧱 Классы в Unity — это чертежи твоих объектов
Они описывают, что объект может делать и какие данные хранить. Всё в C# построено на классах. В Unity каждый твой скрипт — по умолчанию класс.
🔄 Наследование — Когда «Враг» и «Босс» имеют общее
Зачем копировать один и тот же код? Создай базовый класс и унаследуй от него.
🎯 Вариант 1: Классическое наследование (Иерархия «is-a»)
Идеально, когда у объектов общая логика, но есть специфика.
➡️ Когда использовать: Чёткая иерархия (например,
🎯 Вариант 2: Композиция + ScriptableObject (Гибкость «has-a»)
Чаще используется в современных подходах. Разделяй данные и поведение.
➡️ Когда использовать: Нужна быстрая настройка и вариативность (10 типов врагов с разными HP/уроном). Легко балансить игру без изменения кода.
💎 Итог:
• Наследование — строй иерархию «от общего к частному».
• Композиция (использование отдельных классов/данных) — чаще практичнее в геймдеве.
• В Unity MonoBehaviour — уже базовый класс. Твои скрипты наследуются от него.
📌 Правило для инди: Начинай с простого наследования для 2-3 типов врагов. Когда появится 10+ типов с кучей параметров — выноси данные в ScriptableObject.
💬 Твой код больше похож на первый или второй вариант? Делись в комментах!
🔔 Подпишись — дальше разберём интерфейсы и абстрактные классы на реальных примерах из игр.
👉Akrus Games | 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 1
БЕСПЛАТНЫЙ ассет GIZMO MONSTER
Этот набор содержит 6 монстров с анимацией
Используйте размер 32x32, подходит для фэнтези, данженов и игр на выживание, и он будет продолжать обновляться!
Ссылка
Этот набор содержит 6 монстров с анимацией
Используйте размер 32x32, подходит для фэнтези, данженов и игр на выживание, и он будет продолжать обновляться!
Ссылка
🔥5❤1👎1 1
Как создавать собственные классы и наследовать их в C# Unity
Классы — это шаблоны для объектов. Наследование помогает экономить время.
Представь, что ты строишь домики из кубиков. Класс — это набор инструкций, как сложить кубики. Наследование — когда ты берёшь готовый домик и добавляешь к нему крышу или окно, не перестраивая всё заново. В Unity так можно делать с объектами: взять базовый класс (например, «Персонаж») и создать на его основе «Воина» или «Мага», добавив особые умения.
Шаг 1. Создаём базовый класс
Открой Unity, создай новый C#‑скрипт (через контекстное меню в Assets → Create → C# Script). Назови его, например,
Отредактируй скрипт:
Что тут есть:
-
-
-
Шаг 2. Создаём класс‑наследник
Создай ещё один скрипт, назови его
Отредактируй скрипт:
Что изменилось:
-
-
-
Шаг 3. Проверяем в Unity
1. Создай пустой GameObject на сцене (правый клик в иерархии → Create Empty).
2. Прицепи к нему скрипт
3. Запусти игру и посмотри в Console — при вызове
Важные моменты
Наследуй, чтобы не писать код заново.
Классы — это шаблоны для объектов. Наследование помогает экономить время.
Представь, что ты строишь домики из кубиков. Класс — это набор инструкций, как сложить кубики. Наследование — когда ты берёшь готовый домик и добавляешь к нему крышу или окно, не перестраивая всё заново. В Unity так можно делать с объектами: взять базовый класс (например, «Персонаж») и создать на его основе «Воина» или «Мага», добавив особые умения.
Шаг 1. Создаём базовый класс
Открой Unity, создай новый C#‑скрипт (через контекстное меню в Assets → Create → C# Script). Назови его, например,
Character.Отредактируй скрипт:
using UnityEngine;
public class Character : MonoBehaviour
{
public int health = 100;
public float speed = 5f;
public virtual void TakeDamage(int damage)
{
health -= damage;
Debug.Log("Урон получен! Здоровье: " + health);
}
}
Что тут есть:
-
public int health = 100 — здоровье персонажа (число).-
public float speed = 5f — скорость движения (дробное число).-
TakeDamage — метод, который уменьшает здоровье при получении урона.Шаг 2. Создаём класс‑наследник
Создай ещё один скрипт, назови его
Warrior.Отредактируй скрипт:
using UnityEngine;
public class Warrior : Character
{
public int shield = 20;
public override void TakeDamage(int damage)
{
int finalDamage = damage - shield;
if (finalDamage > 0)
{
health -= finalDamage;
}
Debug.Log("Воин получил урон! Здоровье: " + health + ", щит: " + shield);
}
}
Что изменилось:
-
public class Warrior : Character — говорим, что Warrior наследует Character.-
public int shield = 20 — добавили щит (новое свойство).-
override void TakeDamage — переопределили метод, чтобы учитывать щит.Шаг 3. Проверяем в Unity
1. Создай пустой GameObject на сцене (правый клик в иерархии → Create Empty).
2. Прицепи к нему скрипт
Warrior (перетащи скрипт на объект в инспекторе).3. Запусти игру и посмотри в Console — при вызове
TakeDamage ты увидишь логи с учётом щита.Важные моменты
Наследуй, чтобы не писать код заново.
🔥6👎3❤1
Forwarded from Baxx Studio | Unity GameDev
Возможно, у кого-то есть старый аккаунт Google Play Разработчика (до 2023 года). Есть возможность хорошо заработать на этом.
Закрытые за неактив аккаунты тоже принимаются(их можно восстановить)
По любым вопросам в ЛС @Ilya01s.
Закрытые за неактив аккаунты тоже принимаются(их можно восстановить)
По любым вопросам в ЛС @Ilya01s.
❤9🔥3 1
Akrus Games | Unity pinned «Возможно, у кого-то есть старый аккаунт Google Play Разработчика (до 2023 года). Есть возможность хорошо заработать на этом. Закрытые за неактив аккаунты тоже принимаются(их можно восстановить) По любым вопросам в ЛС @Ilya01s.»
Как вам новый формат постов?
Я решил сделать акцент на доступность новичкам.
Я решил сделать акцент на доступность новичкам.
Anonymous Poll
40%
Имба
21%
Верни старый формат
19%
Пойдет
19%
тык
❤2
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь!
Присылайте лучше видео. Хороший компрессор https://tools.rotato.app/compress
#работыПодписчиков
🎧Akrus Games | Unity
Лучшие выложу здесь!
#работыПодписчиков
🎧Akrus Games | Unity
👍3
Игра подписчика @b4nukk
Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
Прикольная 2д стрелялка. Идеальный проект для новичков на текущем этапе.
Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
❤9🔥5
Игра не подписчика @tromgard
Канал: https://t.me/Pigeonofsorrowch
Поиграть онлайн: http://82.202.137.211/ обязательно включите полноэкранный режим
Присылайте свои игры сюда
Akrus Games | Unity
Мой любимый проект из всех, которые я видел.
2д выживач в апокалипсисе. Очень имбовая графика и палитра цветов
Канал: https://t.me/Pigeonofsorrowch
Поиграть онлайн: http://82.202.137.211/ обязательно включите полноэкранный режим
Присылайте свои игры сюда
Akrus Games | Unity
Работа подписчика @MounSword_Gtima
Канал: https://t.me/MSwordStudio
Присылайте свои игры сюда
Akrus Games | Unity
Гриб
+ желаю всем хорошей выходных!!!
Канал: https://t.me/MSwordStudio
Присылайте свои игры сюда
Akrus Games | Unity
This media is not supported in your browser
VIEW IN TELEGRAM
Игра подписчика @code_n_polygons
Канал: @code_n_polygons
Присылайте свои игры сюда
Akrus Games | Unity
Сделал для ГГ квартиру 😁
Игроку — отдых от локации с проверками.
ГГ — свой safe space.
Это уже вторая локация проекта Don't Stay Late. Пока что все накидано довольно широкими мазками, но, самое главное — начало положено
Заинтересовал проект?
Приглашаю подписаться на канал, где выкладываю девлоги по нему. Буду рад каждому вступившему
Канал: @code_n_polygons
Присылайте свои игры сюда
Akrus Games | Unity
❤7👍3🔥1 1
⚔️ Unity: как сделать, чтобы игра не казалась казуальной?
Хочешь, чтобы твою инди-игру воспринимали всерьёз, а не как лёгкий таймкиллер? Вот ключевые точки, где нужно сместить акценты.
1️⃣ Сложность: дай игроку пространство для ошибки, но сделай её дорогой
• Не добавляй «бесконечные жизни». Лучше одна сложная, но честная проверка навыков.
• Откажись от автопомощи в геймплее: никаких автоприцелов или подсказок "нажми сюда" без крайней нужды.
• Введи перманентные последствия: потеря ресурса, изменение мира, перманентная смерть (permadeath) для хардкорного ощущения.
2️⃣ Визуал и атмосфера: серьёзный тон вместо «милоты»
• Цветовая палитра: избегай слишком ярких, "мультяшных" цветов. Используй приглушённые, контрастные тона.
• Звук и музыка: атмосферный саундтрек, а не весёлые мелодии. Звуки должны быть "тяжёлыми" — шаги, удары, скрипы.
• Шейдеры и постобработка: добавь эффекты зерна (Film Grain), хроматических аберраций, виньетирования. Это создаёт "кинематографичную" и взрослую картинку.
3️⃣ Глубина механик: игрок должен думать, а не просто тапать
• Нелинейность: несколько путей прохождения, скрытые зоны, секреты, которые не подсвечены.
• Система крафта/прокачки с выбором: не "улучши всё", а "выбери ветку, откажись от другого". Это создаёт осмысленность.
• Динамические системы: NPC, которые живут своей жизнью, погода, влияющая на геймплей, последствия выбора.
4️⃣ Подача и интерфейс (UI/UX): минимализм и отсутствие "руки-водилки"
• Чистый, сдержанный интерфейс. Никаких пузырьков, мигающих стрелок или детских шрифтов.
• Обучение через практику. Не текстовые стены туториала, а интеграция обучения в геймплей (как в Dark Souls).
• Скрытая статистика и механики. Пусть игрок сам экспериментирует и открывает взаимодействия.
💡 Главный принцип: УВАЖАЙ игрока. Дай ему вызов, доверь его интеллекту, погрузи в атмосферу. Игра перестаёт быть казуальной, когда к ней нужно относиться серьёзно.
🔔 Подписывайся, чтобы не пропустить разборы конкретных техник: от сложного AI до создания мрачной атмосферы в URP.
💬 А что, по-твоему, убивает "казуальность" в игре? Делитесь в комментариях! 👉 Akrus Games | Unity
Хочешь, чтобы твою инди-игру воспринимали всерьёз, а не как лёгкий таймкиллер? Вот ключевые точки, где нужно сместить акценты.
1️⃣ Сложность: дай игроку пространство для ошибки, но сделай её дорогой
• Не добавляй «бесконечные жизни». Лучше одна сложная, но честная проверка навыков.
• Откажись от автопомощи в геймплее: никаких автоприцелов или подсказок "нажми сюда" без крайней нужды.
• Введи перманентные последствия: потеря ресурса, изменение мира, перманентная смерть (permadeath) для хардкорного ощущения.
2️⃣ Визуал и атмосфера: серьёзный тон вместо «милоты»
• Цветовая палитра: избегай слишком ярких, "мультяшных" цветов. Используй приглушённые, контрастные тона.
• Звук и музыка: атмосферный саундтрек, а не весёлые мелодии. Звуки должны быть "тяжёлыми" — шаги, удары, скрипы.
• Шейдеры и постобработка: добавь эффекты зерна (Film Grain), хроматических аберраций, виньетирования. Это создаёт "кинематографичную" и взрослую картинку.
3️⃣ Глубина механик: игрок должен думать, а не просто тапать
• Нелинейность: несколько путей прохождения, скрытые зоны, секреты, которые не подсвечены.
• Система крафта/прокачки с выбором: не "улучши всё", а "выбери ветку, откажись от другого". Это создаёт осмысленность.
• Динамические системы: NPC, которые живут своей жизнью, погода, влияющая на геймплей, последствия выбора.
4️⃣ Подача и интерфейс (UI/UX): минимализм и отсутствие "руки-водилки"
• Чистый, сдержанный интерфейс. Никаких пузырьков, мигающих стрелок или детских шрифтов.
• Обучение через практику. Не текстовые стены туториала, а интеграция обучения в геймплей (как в Dark Souls).
• Скрытая статистика и механики. Пусть игрок сам экспериментирует и открывает взаимодействия.
💡 Главный принцип: УВАЖАЙ игрока. Дай ему вызов, доверь его интеллекту, погрузи в атмосферу. Игра перестаёт быть казуальной, когда к ней нужно относиться серьёзно.
🔔 Подписывайся, чтобы не пропустить разборы конкретных техник: от сложного AI до создания мрачной атмосферы в URP.
💬 А что, по-твоему, убивает "казуальность" в игре? Делитесь в комментариях! 👉 Akrus Games | Unity
🔥9👍4 3
⚙️ Unity: рабочий способ сделать колесо фортуны
Сохрани этот рецепт, когда понадобится рулетка, лутбокс или мини-игра с вращением. Сделаем быстро и без боли.
Идея: вращаем объект через
1️⃣ Скрипт контролируемого вращения:
2️⃣ Как использовать:
• Укажи в
• Вызови метод
🔔 Подпишись — впереди еще больше готовых решений для твоего инди-проекта.
👉Akrus Games | Unity
Сохрани этот рецепт, когда понадобится рулетка, лутбокс или мини-игра с вращением. Сделаем быстро и без боли.
Идея: вращаем объект через
Transform.Rotate по заданному алгоритму — колесо сделает N полных оборотов + смещение до выигрышного сектора.1️⃣ Скрипт контролируемого вращения:
public class ControlledWheel : MonoBehaviour
{
public int totalSectors = 8;
public float spinDuration = 5f;
public int winSectorIndex = 0; // Индекс выигрышного сектора (считай с 0)
public void Spin()
{
float fullCircles = 3; // Количество полных оборотов перед остановкой
float sectorAngle = 360f / totalSectors;
float targetAngle = 360f * fullCircles + (sectorAngle * winSectorIndex);
StartCoroutine(SpinRoutine(targetAngle));
}
IEnumerator SpinRoutine(float targetAngle)
{
float elapsed = 0;
float startAngle = transform.eulerAngles.z;
while (elapsed < spinDuration)
{
float t = elapsed / spinDuration;
t = t * t * (3f - 2f * t); // SmoothStep для плавного замедления
float angle = Mathf.Lerp(startAngle, startAngle + targetAngle, t);
transform.rotation = Quaternion.Euler(0, 0, angle);
elapsed += Time.deltaTime;
yield return null;
}
// Точная остановка на выигрышном секторе
transform.rotation = Quaternion.Euler(0, 0, startAngle + targetAngle);
Debug.Log($"Выпал сектор: {winSectorIndex + 1}");
}
}
2️⃣ Как использовать:
• Укажи в
winSectorIndex номер выигрышного сектора (от 0).• Вызови метод
Spin() по нажатию кнопки.🔔 Подпишись — впереди еще больше готовых решений для твоего инди-проекта.
👉Akrus Games | Unity
❤5👍5👎2🔥1 1