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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5😱211
Новости, (!) по геймдеву

Всем привет! Мы решили создать для вас папку с каналами о программировании и геймдеве. Ссылка на добавление папки снизу⬇️
https://t.me/addlist/o0lxO5aWyHYwZjcy
Please open Telegram to view this post
VIEW IN TELEGRAM
😱1
Паттерн «Состояние» (State): Умное управление поведением

Что это?
Паттерн, который позволяет объекту изменять свое поведение в зависимости от внутреннего состояния. Как режимы работы устройства.

Зачем?
• Избегать гигантских конструкций switch или if-else
• Четко разделять логику разных состояний
• Упрощать добавление новых состояний

Как работает?
1. Создаешь интерфейс состояния (IState) с методами Enter(), Update(), Exit()
2. Реализуешь конкретные состояния (например, IdleState, MoveState, AttackState)
3. Создаешь класс StateMachine, который управляет текущим состоянием

Пример: Простая машина состояний врага
// 1. Интерфейс состояния
public interface IEnemyState
{
void Enter();
void Update();
void Exit();
}

// 2. Конкретное состояние - Преследование
public class ChaseState : IEnemyState
{
public void Enter() { Debug.Log("Начинаю преследование!"); }
public void Update() { /* Логика движения к игроку */ }
public void Exit() { Debug.Log("Прекращаю преследование."); }
}

// 3. Машина состояний
public class EnemyAI : MonoBehaviour
{
IEnemyState currentState;

public void ChangeState(IEnemyState newState)
{
currentState?.Exit();
currentState = newState;
currentState?.Enter();
}

void Update()
{
currentState?.Update();
}
}

// Использование:
EnemyAI ai = GetComponent<EnemyAI>();
ai.ChangeState(new ChaseState());


Важно!
• Каждое состояние отвечает только за свою логику
• Переход между состояниями происходит в одном месте (StateMachine)
• Отлично сочетается с другими паттернами (например, Command)

💡 Применяй для: ИИ врагов, анимаций, управления игроком (бег, прыжок, атака).

#Unity #CSharp #Patterns #StateMachine #GameDev
🎄432
😒
Please open Telegram to view this post
VIEW IN TELEGRAM
11😁42
Media is too big
VIEW IN TELEGRAM
Pulse Of Fear 👍

Ссылка на игру 🔗

Над игрой ребята работали 2-3 месяца. Более 150 коммитов на гите. Смогли выйти на гугл плей.

Игра началась с концепта таких популярных игр как : Eyes, Granny и др.

Разработчики прислушиваются к советам, так что пишите им, в случае нахождения багов или советов.

Хоррор-игра о выживании в страшных и заброшенных местах!

Оказавшись в ловушке в заброшенном месте, где обитает нечто невыразимое, ваше выживание зависит от двух вещей: света и тишины.

Решайте головоломки, придумывайте пути обхода монстров
😎

Губби тоже тут
😎


Над игрой работали эти ребята:
MorPo
NOBICE
Dispelin

Так же пишите отзывы (рофельные или же по делу) , они попадут в нарезку в канале MorPo
Please open Telegram to view this post
VIEW IN TELEGRAM
533
Чистый код в Unity: правила для читаемости и поддержки

Что это?
Правила написания кода, которые делают его понятным для тебя и других разработчиков.

Зачем?
• Легче находить и исправлять ошибки
• Упрощается командная работа
• Ускоряется добавление нового функционала

Основные правила:

1️⃣ Именуй методы как действия
Название должно сразу объяснять суть.
// Хорошо:
void MovePlayer() {}
void CalculateDamage() {}

// Плохо:
void DoSomething() {}
void Process() {}


2️⃣ Заменяй "магические числа" на константы
Числа в коде без пояснений запутывают.
// Вместо:
if (health < 30) {}

// Используй:
private const int LOW_HEALTH_THRESHOLD = 30;
if (health < LOW_HEALTH_THRESHOLD) {}


3️⃣ Разделяй ответственность по классам
Один класс — одна задача.
• PlayerMovement.cs — за перемещение
• PlayerHealth.cs — за здоровье
• PlayerInventory.cs — за инвентарь

4️⃣ Убирай дублирование кода
Повторяющуюся логику выноси в отдельные методы.
// Вынеси в метод:
private void PlaySound(AudioClip clip)
{
audioSource.PlayOneShot(clip);
}


5️⃣ Пиши осмысленные комментарии
Объясняй "почему", а не "что".
// Плохо: 
x += 10; // Добавляем 10 к x

// Хорошо:
x += bonusScore; // Начисляем бонус за сложное достижение


💡 Помни: код читают чаще, чем пишут. Делай его понятным!
#Unity #CSharp #GameDev #ЧистыйКод
🔥74311
А казалось, все так просто🥲
Please open Telegram to view this post
VIEW IN TELEGRAM
😁54🎄31
Адаптивный UI в Unity: как избежать поломок

Что это?
Правильная настройка UI, который корректно отображается на любых разрешениях экрана.

Как сделать?
1. Canvas Scaler:
- Режим: Scale With Screen Size
- Референсное разрешение: 1920x1080
- Screen Match Mode: Match Width Or Height

2. Anchors и Pivot:
- Фиксируй элементы через anchorMin/anchorMax
- Пример: кнопка в углу всегда останется на месте

3. Safe Area для мобилок:

   RectTransform rect = GetComponent<RectTransform>();
rect.anchorMin = Screen.safeArea.position;
rect.anchorMax = Screen.safeArea.size;


4. Layout Group:
- Используй Vertical/Horizontal Layout Group
- Избегай фиксированных размеров
- Для сложных списков контролируй размеры через LayoutElement

5. Единый UIManager:
- Централизованное управление окнами
- Отслеживание текущего экрана
- Блокировка ввода при переходах

Важно!
• Тестируй на разных разрешениях (от телефона до планшета)
• Для Scroll View оптимизируй через Object Pooling
• Используй события вместо прямых ссылок между панелями

💡 Применяй для: мобильных игр, кроссплатформенных проектов, сложных интерфейсов.
Стабильный UI = профессиональное впечатление от игры!

#Unity #UI #GameDev #AdaptiveUI
53
Please open Telegram to view this post
VIEW IN TELEGRAM
7442111
Изменяемое окно игры в Unity

Как настроить?
В сборках под ПК (Windows/Mac/Linux) это делается в настройках плеера.

Пошагово:
1. Открой File → Build Settings
2. Выбери платформу (PC)
3. Нажми Player Settings
4. В разделе Resolution and Presentation:
- Default Is Full Screen — сними галочку
- Fullscreen Mode — выбери "Windowed"
- Resizable Window — отметь галочку (доступно для Windows/Mac)

Важные нюансы:
• Размер окна при старте задаётся в полях Default Screen Width/Height
• Игрок может менять размер перетаскиванием краёв окна
• В коде можно отслеживать изменение размера:

void Update()
{
if (Screen.width != lastWidth || Screen.height != lastHeight)
{
// Пересчитать интерфейс или камеру
UpdateLayout();
lastWidth = Screen.width;
lastHeight = Screen.height;
}
}


Что проверить:
- Интерфейс (UI) должен адаптироваться под разные разрешения
- Камера может требовать перенастройки при изменении пропорций
- Для Windows убедись, что в Target Platform выбрана версия с DX11/OpenGL

💡 Используй для: удобства тестирования, игр с оконным режимом, инструментов разработки.

Советую прочитать предыдущий пост про настройку Canvas

#Unity #GameDev #Сборка #Unity2D #Unity3D
4331
Шумы в Unity: генерация миров и не только

Что это?
Математические алгоритмы для создания псевдослучайных узоров. Не просто хаос, а структурированная случайность!

Зачем?
• Генерация процедурных ландшафтов (террейн)
• Создание текстур (облака, огонь, дым)
• Анимация значений (мерцание, дрожание)
• Размещение объектов на локации

Основные типы:
Perlin Noise - классика для плавных высот:
float height = Mathf.PerlinNoise(x * scale, y * scale);


Simplex Noise - оптимизированная версия Perlin
Value Noise - более блочный и резкий результат
Cellular Noise - для ячеистых структур (пчелиные соты, трещины)

Пример использования для террейна:
for (int x = 0; x < width; x++) {
for (int z = 0; z < depth; z++) {
// Получаем высоту через шум
float y = Mathf.PerlinNoise(x * 0.1f, z * 0.1f) * 20f;
Instantiate(groundTile, new Vector3(x, y, z), Quaternion.identity);
}
}


Важно!
• Используй разные масштабы (scale) для детализации
• Комбинируй несколько слоёв шума для сложных форм
• В Unity есть встроенный Mathf.PerlinNoise
• Для продвинутых вариантов используй сторонние библиотеки (FastNoise)

💡 Применяй для: процедурной генерации, VFX, случайных событий с естественным видом.
Преврати хаос в контролируемый инструмент!

#Unity #GameDev #ProceduralGeneration #Noise #Gamedevelopment
🔥6531
В Unity нашли серьёзную уязвимость

Если вы открыли свои проекты в Unity Hub, возможно, вы заметили красную плашку с предупреждением о безопасности. Unity сообщает о серьёзной уязвимости (CVE-2025-59489), которая затрагивает почти все версии редактора до последних патчей.

В чём проблема: приложения, собранные на уязвимых версиях Unity, могут небезопасно загружать локальные файлы, а в редких случаях это может привести к выполнению кода или доступу к данным на уровне приложения. Уязвимость затрагивает Windows, Android, Linux и macOS, причём на Windows риск выше, если приложение использует зарегистрированные URI-обработчики.

Практически все старые версии и LTS до последних патчей уязвимы. Исправления уже доступны в последних версиях Unity, включая 6000.3.0b4, 6000.2.6f2, 6000.0.58f2, 2022.3.67f2 и 2021.3.56f2.

Что нужно делать: обновить Unity Editor до патченной версии и пересобрать приложения. Для уже выпущенных проектов можно использовать Unity Binary Patch Tool, чтобы заменить уязвимые библиотеки без полной пересборки.
7🤯6
😒

Папищики, ставьте реакции пожалуйста😏. а то что за дичь: 388 подписчиков и 2 реакции🥲
Please open Telegram to view this post
VIEW IN TELEGRAM
21873😁2
🛠 Обзор программ для 3D-моделирования

Blender
Бесплатный и мощный
Лучшее для: Полного цикла — моделирование, скульптинг, анимация, рендер
Фишки: Нодальная система материалов, Geometry Nodes, Eevee/Cycles рендеры
Поддержка Unity: Идеальный импорт через FBX, поддерживает все основные форматы

Maya
Индустриальный стандарт
Лучшее для: Сложной анимации и кинематографичных сцен
Фишки: Мощная анимационная система, инструменты для риггинга
Для Unity: Прямая интеграция через Unity FBX Exporter — сохраняет материалы и текстуры

3ds Max
Для архитектуры и игр
Лучшее для: Архитектурной визуализации, полигонального моделирования
Фишки: Модификаторы (Modifiers), удобные инструменты для работы с полигонами
Экспорт в Unity: FBX с сохранением иерархии и трансформ

ZBrush
Король скульптинга
Лучшее для: Детализированных персонажей и органических форм
Фишки: Скульптинг миллионами полигонов, автоматическая ретопология
Рабочий процесс: Скульпт в ZBrush → ретопология → запекание карт нормалей → импорт в Unity

Substance Painter
Текстурирование нового уровня
Лучшее для: Реалистичного текстурирования и работы с материалами
Фишки: Умные материалы, работа со слоями, встроенные кисти и альфа-каналы
Интеграция с Unity: Прямой экспорт материалов с картами (albedo, normal, metallic)

Совет: Начни с Blender — он покрывает 99.9% потребностей и постоянно обновляется. Для текстурирования добавь Substance Painter.

#Unity3D #3DModeling #Gamedevelopment
63🎄21
😎


У меня закончились идеи для постов😠
Мне кажется что я уже рассказал все что есть в юнити и c#🙁
Поэтому накидайте годных идей в комментарии⌨️
Please open Telegram to view this post
VIEW IN TELEGRAM
995211
⚡️ 2 крутых шейдера, которые ты сделаешь в Shader Graph за 5 минут

Не бойся шейдеров! Shader Graph позволяет собирать их визуально, без написания кода. Идеально для быстрых и красивых эффектов.

🎯 Простой мерцающий свечение (Glow Pulse)

Идеально для предметов, энергии, интерфейса.

1️⃣ Создай материал на основе Unlit Graph
2️⃣ Собери ноду:
TimeSine — получаем волну от -1 до 1.
• Умножь на параметр Pulse Speed.
• Добавь Color и подключи к нему волну через Lerp — цвет будет пульсировать.
3️⃣ Подключи к `Emission` — объект начнёт светиться с переменной интенсивностью.

📌 Итог: Монетка, которая ритмично светится, призывая игрока её подобрать.

🔥 Эффект растворения (Dissolve)

Для исчезновения врагов, разрушения объектов, телепортации.

1️⃣ Основа — простая текстура шума (Noise)
2️⃣ Собери цепь:
Sample Texture 2D (с шумом) → Split (берем канал R).
• Создай параметр Dissolve Amount (от 0 до 1).
• Сравни шум и параметр через SubtractStep.
3️⃣ Подключи результат к `Alpha` — часть объекта будет "исчезать".
4️⃣ Добавь краю свечение: Используй Power ноду на основе разницы между шумом и параметром, и подключи к Emission.

📌 Итог: Враг горит синим пламенем и растворяется в пепле после поражения.

Начни с этих примеров! Shader Graph открывает тонны возможностей: от простой воды до сложных искажений.

💬 Какой эффект хочешь сделать первым? Пиши в комментах!
🔔 Подпишись — впереди ещё много шейдерной магии и фишек по визуалу.

Akrus Games | Unity
753🤯11
🎧 Unity Audio Mixer для чайников

Разберём Audio Mixer за 2 минуты. Это не сложнее, чем настроить громкость в телефоне — только круче.

1️⃣ Создаём микшер и группы

• В Project → ПКМ → Create → Audio Mixer
• Открываешь окно Audio Mixer (Window → Audio → Audio Mixer)
• Создаёшь группы для разных типов звуков: Music, SFX, UI, Ambience
• В AudioSource выбираешь нужную Output-группу

2️⃣ Настраиваем плавное управление громкостью

Не используй прямые значения — работай через параметры!

public AudioMixer mixer;

// Меняем громкость группы Music
mixer.SetFloat("MusicVolume", Mathf.Log10(volume) * 20);


🔸 volume от 0.0001 до 1
🔸 Формула преобразует в децибелы — так работает настоящий звук

3️⃣ Снепшоты — твой лучший друг

Мгновенно переключай настройки звука между сценами:

• В микшере: Add Snapshot → New Snapshot
• В коде: mixer.FindSnapshot("Menu").TransitionTo(0.5f);

💡 Примеры использования:
• Меню игры — приглушённая музыка
• Битва — усиленные звуки выстрелов
• Пауза — тихая фоновая музыка

4️⃣ Эффекты в дорожках

Добавляй на группы:
• Low Pass — приглушает звук (идеально для паузы)
• High Pass — обрезает басы
• Reverb — эхо для пещер и помещений

⚡️ Итог: Audio Mixer = твой центральный пульт управления звуком. Группы, снепшоты и параметры — всё, что нужно для про-звука.

💬 Используешь микшер в своих проектах?
🔔 Подпишись — впереди ещё больше практических гайдов по Unity и C#!
Akrus Games | Unity
🔥85🎄41
⚡️ Unity: Переходи на New Input System

Забудь про Input.GetKey()! Новая система ввода — это мощь, контроль и поддержка любых устройств из коробки.

Вот как начать:

1️⃣ Установка через Package Manager

⋙ Открой Package Manager → Unity Registry
⋙ Найди "Input System" → Install
⋙ Подтверди замену старой системы ввода

2️⃣ Создаём Input Actions

⋙ В Project → Create → Input Actions
⋙ Добавь Map "Player", Action "Move"
⋙ Настрой тип значения — Vector2
⋙ Привяжи к клавишам (WASD/Стрелки) и геймпаду (Left Stick)

💡 Преимущество: один скрипт работает с клавиатурой, геймпадом и даже тачем!

Как использовать в коде:

public class PlayerController : MonoBehaviour
{
private PlayerInput _input;
private Vector2 _direction;

void Awake()
{
_input = new PlayerInput();
_input.Player.Move.performed += ctx => _direction = ctx.ReadValue<Vector2>();
_input.Player.Move.canceled += ctx => _direction = Vector2.zero;
}

void Update() => transform.Translate(_direction * Time.deltaTime);

void OnEnable() => _input.Enable();
void OnDisable() => _input.Disable();
}


🔥 Что получаешь:
• Автоматическая поддержка нескольких устройств
• Переключение между схемами управления на лету
• Чистый и расширяемый код
• Готовые решения для мобильных устройств

🚀 Совет: Используй Input Action Asset — создавай все управления в одном файле и переиспользуй между проектами!

💬 Уже перешел на новую систему? Делись опытом в комментах!
🔔 Подпишись — еще больше продвинутых фишек по Unity ждут тебя!

Akrus Games | Unity
442🔥111
Как думаете почему популярные игры написаны не на глобальных движках?

Пишите в комментарии свои версии!
⌨️

Я
тоже напишу что думаю.

Это была ошибка. все игры написаны на движках. я взял не проверенную информацию
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9431
Российский геймдев все🥲.
В Госдуме собираются ввести ГОСТ для игр.

В документе о сохранении ценностей и детей хотят прописать:

— Сколько насилия в играх допустимо
— Какие сюжеты считаются «правильными»
— Какие темы запретят как противоречащие «традиционным ценностям»
Please open Telegram to view this post
VIEW IN TELEGRAM
😱1131
😒


Извините что не было постов😭
Мне не хватало времени
💧
НО, завтра напишу образовалочку и 400 папищиков кое-что будет
💃
Please open Telegram to view this post
VIEW IN TELEGRAM
1233