Akrus Games | Unity
2.95K subscribers
407 photos
89 videos
11 files
350 links
Самые годные лайфхаки по unity c#

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
Как создавать собственные классы и наследовать их в 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👎31
Возможно, у кого-то есть старый аккаунт Google Play Разработчика (до 2023 года). Есть возможность хорошо заработать на этом.

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

По любым вопросам в ЛС @Ilya01s.
9🔥31
Akrus Games | Unity pinned «Возможно, у кого-то есть старый аккаунт Google Play Разработчика (до 2023 года). Есть возможность хорошо заработать на этом. Закрытые за неактив аккаунты тоже принимаются(их можно восстановить) По любым вопросам в ЛС @Ilya01s.»
Как вам новый формат постов?
Я решил сделать акцент на доступность новичкам.
Anonymous Poll
40%
Имба
21%
Верни старый формат
19%
Пойдет
19%
тык
2
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь!


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

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

🎧Akrus Games | Unity
👍3
Игра подписчика @b4nukk
Прикольная 2д стрелялка. Идеальный проект для новичков на текущем этапе.

Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
9🔥5
Часть будет разыгрываться😏
12🔥22
Игра не подписчика @tromgard
Мой любимый проект из всех, которые я видел.
2д выживач в апокалипсисе. Очень имбовая графика и палитра цветов

Канал: https://t.me/Pigeonofsorrowch
Поиграть онлайн: http://82.202.137.211/ обязательно включите полноэкранный режим
Присылайте свои игры сюда
Akrus Games | Unity
8🔥5🎄1
Работа подписчика @MounSword_Gtima
Гриб
+ желаю всем хорошей выходных!!!

Канал: https://t.me/MSwordStudio
Присылайте свои игры сюда
Akrus Games | Unity
8
This media is not supported in your browser
VIEW IN TELEGRAM
Игра подписчика @code_n_polygons
Сделал для ГГ квартиру 😁
Игроку — отдых от локации с проверками.
ГГ — свой safe space.

Это уже вторая локация проекта Don't Stay Late. Пока что все накидано довольно широкими мазками, но, самое главное — начало положено

Заинтересовал проект?
Приглашаю подписаться на канал, где выкладываю девлоги по нему. Буду рад каждому вступившему

Канал: @code_n_polygons
Присылайте свои игры сюда
Akrus Games | Unity
7👍3🔥11
👍411
⚔️ Unity: как сделать, чтобы игра не казалась казуальной?

Хочешь, чтобы твою инди-игру воспринимали всерьёз, а не как лёгкий таймкиллер? Вот ключевые точки, где нужно сместить акценты.

1️⃣ Сложность: дай игроку пространство для ошибки, но сделай её дорогой
Не добавляй «бесконечные жизни». Лучше одна сложная, но честная проверка навыков.
Откажись от автопомощи в геймплее: никаких автоприцелов или подсказок "нажми сюда" без крайней нужды.
Введи перманентные последствия: потеря ресурса, изменение мира, перманентная смерть (permadeath) для хардкорного ощущения.

2️⃣ Визуал и атмосфера: серьёзный тон вместо «милоты»
Цветовая палитра: избегай слишком ярких, "мультяшных" цветов. Используй приглушённые, контрастные тона.
Звук и музыка: атмосферный саундтрек, а не весёлые мелодии. Звуки должны быть "тяжёлыми" — шаги, удары, скрипы.
Шейдеры и постобработка: добавь эффекты зерна (Film Grain), хроматических аберраций, виньетирования. Это создаёт "кинематографичную" и взрослую картинку.

3️⃣ Глубина механик: игрок должен думать, а не просто тапать
Нелинейность: несколько путей прохождения, скрытые зоны, секреты, которые не подсвечены.
Система крафта/прокачки с выбором: не "улучши всё", а "выбери ветку, откажись от другого". Это создаёт осмысленность.
Динамические системы: NPC, которые живут своей жизнью, погода, влияющая на геймплей, последствия выбора.

4️⃣ Подача и интерфейс (UI/UX): минимализм и отсутствие "руки-водилки"
Чистый, сдержанный интерфейс. Никаких пузырьков, мигающих стрелок или детских шрифтов.
Обучение через практику. Не текстовые стены туториала, а интеграция обучения в геймплей (как в Dark Souls).
Скрытая статистика и механики. Пусть игрок сам экспериментирует и открывает взаимодействия.

💡 Главный принцип: УВАЖАЙ игрока. Дай ему вызов, доверь его интеллекту, погрузи в атмосферу. Игра перестаёт быть казуальной, когда к ней нужно относиться серьёзно.

🔔 Подписывайся, чтобы не пропустить разборы конкретных техник: от сложного AI до создания мрачной атмосферы в URP.

💬 А что, по-твоему, убивает "казуальность" в игре? Делитесь в комментариях! 👉 Akrus Games | Unity
🔥9👍43
⚙️ 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🔥11
А вы можете?
Лично я не могу(максимум перезагрузить)
16
Бесплатный ассет RPG Icons

Набор из 25 пиксель арт иконок для ваших проектов

Ссылка: вот здесь
5🔥3
🎨 Unity: палитра для каждого жанра

Выбираешь цвета «на глаз»? Они задают тон всей игре. Подбери палитру под жанр — и игрок с первых секунд поймёт, во что он попал.

Сохраняй шпаргалку для своих проектов!

🔶 Ретро-платформер / Пиксель-арт
▪️ Цвета: Яркие, контрастные. Чистые оттенки без градиентов.
▪️ Пример: Тёмный фон (#0D2B4D), яркий герой (#FF963D), кислотные враги (#FF004D).
▪️ Зачем: Чёткое разделение объектов на экране. Дух старых консолей.
▪️ Ресурс: https://lospec.com/palettes — сотни готовых палитр.

🌌 Космический хоррор / Sci-Fi
▪️ Цвета: Холодные, приглушённые. Синие, зелёные, серые тона. Яркие акценты только на интерфейсе.
▪️ Пример: Основной — #1C2E45, металл — #7A93A5, свет панелей — #00FFE0.
▪️ Зачем: Давление, одиночество, холод техники. Красный сигнал тревоги будет врезаться в память.
▪️ Лайфхак: В постобработке (Color Grading) сдвинь баланс белого в синий.

☀️ Казуальная 3D-аркада / Гонки
▪️ Цвета: Тёплые, «летние». Нежно-голубой небо (#87CEEB), зелёная трава (#7CFC00), яркие элементы геймплея (красный, оранжевый).
▪️ Пример: Фон — пастельный, игровые объекты — насыщенные.
▪️ Зачем: Чувство лёгкости, позитива. Игрок не напрягается.
▪️ Правило: Небо и земля — светлые и ненасыщенные. Герой/машина — самый яркий пятно.

🧟 Выживание / Пост-апокалипсис
▪️ Цвета: Землистые, грязные. Коричневый (#4A3728), тускло-зелёный (#5A7D5A), грязно-жёлтый (#B5A642).
▪️ Пример: Нет чистых красок. Всё будто в пыли.
▪️ Зачем: Передать атмосферу упадка, истощения ресурсов.
▪️ Фишка: Добавь поверх всего лёгкий оверлей (Color Grading) с оттенком сепии или серого.

⚡️ Ключевой принцип: 60-30-10
60% экрана — доминирующий цвет (фон, земля).
30% — вторичный цвет (объекты, здания).
10% — акцентный цвет (герой, враги, кнопки, коллекционные предметы).

Именно эти 10% цвета игрок запомнит. Сделай их контрастными!

💭 Как внедрить?
1. Закрепи в сцене простой материал с нужной палитрой.
2. Настрой освещение (Temperature в лайтах) под цветовую гамму.
3. Используй Pixelator или Palette Editor из Asset Store для быстрого подбора.

Вывод: Цвет — это невидимый геймдизайнер. Он направляет взгляд и создаёт настроение.

📌 Сохрани эту схему перед началом следующего проекта!
🔔 Подпишись — завтра покажу, как через Shader Graph за 5 минут сделать стилизацию под любой жанр.

💬 В каком жанре делаешь игру? Как подбираешь цвета? Пиши в комментах!

👉Akrus Games | Unity
👍5👎41
C# Атрибуты в Unity: мета-инструкции для кода

Что это?

Специальные метки для классов, переменных или методов. Они дают подсказки движку и редактору Unity, как с ними работать.

Зачем?

- Делать переменные видимыми в Инспекторе без ключевого слова public
- Задавать диапазоны значений для ползунка
- Добавлять в контекстное меню кнопки для вызова методов
- Скрывать ненужные поля в Инспекторе

Как использовать?

Просто напиши имя атрибута в квадратных скобках [] перед элементом.

Популярные атрибуты:

[SerializeField]
Показывает private поле в Инспекторе.
[SerializeField] private int _health;


[Range(min, max)]
Создает ползунок для значения.
[Range(0f, 10f)] public float speed;


[Header("Название")]
Добавляет заголовок в Инспектор.
[Header("Player Settings")]
public int playerScore;


[Tooltip("Подсказка")]

Показывает текст при наведении курсора.
[Tooltip("Сила прыжка в ньютонах")] 
public float jumpForce;


[HideInInspector]

Прячет public поле из Инспектора.
[HideInInspector] public bool isGrounded;


Важно!

Атрибуты не меняют логику кода, а только управляют его отображением и поведением в редакторе Unity. НО есть атрибут Obsolete который не относится к юнити и не влияет на отображение в редакторе. Еще в поля можно писать только константы, не переменные!

💡 Используй, чтобы сделать процесс настройки объектов интуитивным и удобным.

#Unity #Unity3D #CSharp #Атрибуты #Gamedevelopment
🔥8🎄2
⚡️ Unity: 5 вещей, которые убивают оптимизацию

Твой проект лагает даже на сцене с кубиками? Скорее всего, причина в одной из этих 5 ошибок. Устрани их — и производительность сразу вырастет.

1️⃣ Бесконечный поток новых объектов (Instantiate/Destroy)

Это хаос в памяти! Создание и удаление объекта — тяжёлые операции для Garbage Collector (GC).

📌 Что делать: Используй пул объектов (Object Pooling). Создай заранее 10 пуль, 20 врагов или 100 эффектов. Переиспользуй их, а не создавай заново.

💡 Создай один раз, спрячь (SetActive(false)), доставай когда нужно.

2️⃣ Полноценный Update() там, где можно обойтись

Проверка условия в Update() 60 раз в секунду — дикая нагрузка, если это не требуется.

📌 Что делать: Вместо if (isReady) в Update() используй корутину с WaitForSeconds или InvokeRepeating. Для физики — FixedUpdate. Для событий — подписки (event/delegate).

💡 Замени void Update() на IEnumerator MyTimer() везде, где это возможно.

3️⃣ Слишком много объектов на сцене с коллайдерами

Каждый коллайдер — нагрузка на физику (Physics Engine). 100 активных Rigidbody и BoxCollider = гарантированные тормоза.

📌 Что делать: Отключай (enabled = false) коллайдеры у далёких или неактивных объектов. Для статичной декорации используй один Mesh Collider вместо сотни примитивных.

💡 Ставь Static Flag для неподвижных объектов — физический движок их оптимизирует.

4️⃣ Сырые текстуры и модели

Загрузил в проект 4K текстуру для кнопки? Модель с 100к полигонов для камня? Память съедена, а FPS упал.

📌 Что делать: Всегда сжимай текстуры (Format: ASTC, ETC2). Оптимизируй полигоны моделей. Используй спрайт-атласы для 2D.

💡 В окне Import Settings задавай максимальный размер текстуры (Max Size 1024 для фона — уже много).

5️⃣ Глобальные переменные в скриптах


Постоянные обращения типа FindObjectOfType<GameManager>() или GetComponent<>() в Update — это вызовы каждый кадр.

📌 Что делать: Кэшируй ссылки! Выполни поиск в Start() или Awake() и сохрани в приватную переменную. Обращайся уже к ней.

💡 Вместо GetComponent<Renderer>().material.color в цикле — сохрани Renderer _myRenderer один раз.

🔥 Проверь свой проект по этим пунктам прямо сейчас. Чаще всего проблема в первых трёх!

📌 Сохрани этот чек-лист перед каждым билдом.
🔔 Подписывайся — дальше будет про оптимизацию UI, Shader'ов и памяти на мобилках.

💬 А с какой проблемой сталкивался ты? Пиши в комментах!

👉Akrus Games | Unity
7🔥4