TGViewer
Channel Public Channel
Akrus Games | Unity

Akrus Games | Unity

@akrusunity

Самые годные лайфхаки по unity c#

Сотрудничество/реклама/помощь @Akrus001
Subscribers
2.67K
Photos
416
Videos
91
Links
357

Showing posts older than #847 · Back to latest

Older Posts 20 shown
Post #846 557
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь!


Присылайте лучше видео. Хороший компрессор https://tools.rotato.app/compress

#работыПодписчиков

🎧Akrus Games | Unity
  • 👍 3
Post #845 680
  • ❤ 2
Post #844
Akrus Games | Unity pinned «Возможно, у кого-то есть старый аккаунт Google Play Разработчика (до 2023 года). Есть возможность хорошо заработать на этом. Закрытые за неактив аккаунты тоже принимаются(их можно восстановить) По любым вопросам в ЛС @Ilya01s.»
Post #843 574

Forwarded from Baxx Studio | Unity GameDev

Возможно, у кого-то есть старый аккаунт Google Play Разработчика (до 2023 года). Есть возможность хорошо заработать на этом.

Закрытые за неактив аккаунты тоже принимаются(их можно восстановить)

По любым вопросам в ЛС @Ilya01s.
  • ❤ 9
  • 🔥 3
Post #839 691
Как создавать собственные классы и наследовать их в C# Unity

Классы — это шаблоны для объектов. Наследование помогает экономить время.

Представь, что ты строишь домики из кубиков. Класс — это набор инструкций, как сложить кубики. Наследование — когда ты берёшь готовый домик и добавляешь к нему крышу или окно, не перестраивая всё заново. В 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
Post #838 825
БЕСПЛАТНЫЙ ассет GIZMO MONSTER

Этот набор содержит 6 монстров с анимацией

Используйте размер 32x32, подходит для фэнтези, данженов и игр на выживание, и он будет продолжать обновляться!

Ссылка
  • 🔥 5
  • ❤ 1
  • 👎 1
Post #837 951
💀

Каникулы заканчиваются, админ начинает писать посты
  • 🎄 14
  • 🔥 4
  • 👎 1
  • 😁 1
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
Post #835 799
⚡️ SOLID в Unity: пиши код, который не сломается через месяц

Сохрани — эти 5 принципов спасут твой проект от бардака, когда ты начнёшь добавлять новую фичу в старую игру.

S — Единая ответственность (Single Responsibility)
Класс должен делать что-то одно. Не создавай монстров вроде PlayerController, который и двигается, и стреляет, и UI обновляет.
✅ Правильно: PlayerMovement, PlayerShooter, PlayerHealth — отдельные скрипты. Меняешь движение — не трогаешь логику выстрела.

O — Открытость/закрытость (Open/Closed)
Код должен быть открыт для расширения, но закрыт для изменений.
Допустим, у тебя система урона. Не пиши if (enemy is Goblin) {...} else if (enemy is Dragon) {...}.
✅ Правильно: создай базовый класс Enemy с виртуальным методом TakeDamage(). Для нового типа врага просто создай новый класс — старый код менять не придётся.

L — Подстановка Лисков (Liskov Substitution)
Наследник должен уметь всё то же, что и родитель. Если твой FlyingEnemy наследуется от Enemy, он должен корректно работать во всех сценариях, где используется Enemy.
✅ Правильно: не переопределяй методы базового класса так, чтобы они ломали логику (например, Move() в наследнике не должен телепортировать объект, если в базовом классе это плавное движение).

I — Разделение интерфейсов (Interface Segregation)
Не заставляй класс реализовывать то, что ему не нужно. Не создавай монстро-интерфейс IUnit с методами Move(), Shoot(), Build().
✅ Правильно: сделай узкие интерфейсы IMovable, IAttackable, IBuilder. Класс Turret реализует только IAttackable, а Worker — IMovable и IBuilder.

D — Инверсия зависимостей (Dependency Inversion)
Завись от абстракций (интерфейсов), а не от конкретных классов.
Не пиши в коде public Rifle currentWeapon;.
✅ Правильно: public IWeapon currentWeapon;. Теперь можно подсунуть любое оружие — пистолет, меч, гранату — и система будет работать. Идеально для быстрого прототипирования и тестов.

💎 Итог: SOLID — это про то, чтобы добавлять фичи быстро, а не разгребать баги неделями. Начни с принципов S и O — они дают самый заметный эффект.

💬 Какой принцип для тебя самый полезный?
📌 Сохрани шпаргалку.
🔔 Подпишись — дальше будем разбирать паттерны в геймдеве.

👉Akrus Games | Unity
  • 🔥 13
  • ❤ 4
Post #834 848
  • ❤ 6
  • 🔥 2
Post #833 806
⚡️ Количество задаваемых вопросов на StackOverflow близится к нулю.

Спад начался еще пару лет назад с появлением ИИ, но сейчас достиг рекордно низких значений.

👆 Так, за весь декабрь поступило всего 3800 вопросов, а за первые дни января ~300.
  • 😱 13
Post #832 1.11K
  • 😁 10
  • ❤ 1
Post #831 1.12K
int a = 2;
int b = 7;
int result = a + b * 2;

Debug.Log(result);
  • 🔥 6
Post #829 1.16K
Что вам подарили на новый год? Присылайте в комментарии!

Мне подарили механическую клавиатуру(она на видео)
  • ❤ 13
  • 🔥 6
Post #828 967
Надо доедать прошлогодние салаты
  • 😁 9
  • ❤ 3
Post #826 1.19K
Привет, маи чуваки!
Я сделал еще один обучающий канал, на этот раз по питону!

https://t.me/PYTH0N_PR0

В нем также будут обучающие гайды и фишки питона, НО поскольку я сильно шарю в питоне, я буду все писать сам от руки.
Так что подписывайтесь чтобы стать настоящим ПРО!

https://t.me/PYTH0N_PR0
  • ❤ 7
  • 🔥 1
Post #825 677
Игра подписчика @avetrill4real
Самое крупное и долгожданное обновление. Речь идёт о мультиплеере.

Эмоции при первых тестах, проведённых не локально, а дистанционно на разных устройствах, просто не передать словами. Это было круто!

Почти вся архитектура механик была переписана под сетевое взаимодействие, реализовано подключение по принципу «клиент-сервер» (P2P) через Steam Lobby, прикручены всякие технические мелочи в виде корректного сохранения и передачи мира при перезаходе в комнату, а также визуальные, например, уведомление о входе игрока в комнату (система уведомлений о ачивках, тратах и т.д. в целом), курсор другого игрока.

Большая работа также была проделана над отловом и фиксом багов с сетевой экономикой, которые целиком и полностью ломали начисление средств, и любой игрок становился миллиардером за секунды. Это было сложно, но задача выполнена!

На текущий момент это самая большая итерация разработки, которая затронула почти все элементы проекта.

Канал: https://t.me/ventadynamics
Присылайте свои игры сюда
Akrus Games | Unity
  • 🔥 4
  • ❤ 1
Post #824 597
  • ❤ 3
  • 🔥 1
Older posts →
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 →