🎨 5 приёмов, чтобы твоя Unity-игра выглядела дорого даже без бюджета
Сохрани — эти штуки реально делают визуал приятнее и выделяют игру среди новичковских проектов.
1️⃣ Постобработка (Post Processing)
➕ Добавь эффект Bloom, Color Grading, Vignette, Ambient Occlusion — и сцена сразу «засияет».
📌 Unity URP / HDRP: уже встроено.
📌 Built-in: ставь Post Processing Stack v2 из Package Manager.
💡 Совет: начинай с Color Grading → «Lift/Gamma/Gain» и «Saturation».
2️⃣ Лайтинг: мягкий свет и тени = половина визуала
🔸 Используй мягкие теневые источники (Soft Shadows).
🔸 Не бойся Ambient Light — выставь приятный цвет.
🔸 Добавь немного “fake lighting” — вручную расставленные точечные огни (Point Light) с маленьким радиусом для акцентов.
💡 Даже одна Directional Light с хорошим цветом и тенью меняет всё.
3️⃣ Цветовая палитра — делай палитру до сцены
🎨 Придерживайся 2-3 основных цветов. Не смешивай кислоту с пастелью.
📌 Используй сайты:
• https://lospec.com/palettes
• https://coolors.co/
💡 Палитра = визуальный стиль. Даже кубы в правильных цветах выглядят красиво.
4️⃣ UI — скругления, шрифт и тени творят чудо
• Ставь кастомный шрифт (Google Fonts, например Exo 2)
• Добавь UI-элементам Outline или Shadow
• Делай отступы и выравнивание — визуально чисто и приятно.
💡 Не забывай Canvas Scaler: Scale With Screen Size.
5️⃣ Плавные анимации = живой мир
🌀 Добавь лёгкие LeanTween/DOTween анимации на UI и объекты.
Например:
• Кнопки масштабируются при наведении
• Предметы чуть покачиваются
• Монетки подпрыгивают
📌 Даже минимальная анимация делает мир “живым”, а игру — опрятной.
✅ Эти простые приёмы = результат, будто над проектом работал дизайнер.
💬 Что ты из этого уже используешь?
🔔 Подписывайся — будет ещё про Shader Graph, URP, эффекты, UI-хитрости и фреймрейт.
👉 Akrus Games | Unity
Сохрани — эти штуки реально делают визуал приятнее и выделяют игру среди новичковских проектов.
➕ Добавь эффект Bloom, Color Grading, Vignette, Ambient Occlusion — и сцена сразу «засияет».
📌 Unity URP / HDRP: уже встроено.
📌 Built-in: ставь Post Processing Stack v2 из Package Manager.
💡 Совет: начинай с Color Grading → «Lift/Gamma/Gain» и «Saturation».
🔸 Используй мягкие теневые источники (Soft Shadows).
🔸 Не бойся Ambient Light — выставь приятный цвет.
🔸 Добавь немного “fake lighting” — вручную расставленные точечные огни (Point Light) с маленьким радиусом для акцентов.
💡 Даже одна Directional Light с хорошим цветом и тенью меняет всё.
🎨 Придерживайся 2-3 основных цветов. Не смешивай кислоту с пастелью.
📌 Используй сайты:
• https://lospec.com/palettes
• https://coolors.co/
💡 Палитра = визуальный стиль. Даже кубы в правильных цветах выглядят красиво.
• Ставь кастомный шрифт (Google Fonts, например Exo 2)
• Добавь UI-элементам Outline или Shadow
• Делай отступы и выравнивание — визуально чисто и приятно.
💡 Не забывай Canvas Scaler: Scale With Screen Size.
🌀 Добавь лёгкие LeanTween/DOTween анимации на UI и объекты.
Например:
• Кнопки масштабируются при наведении
• Предметы чуть покачиваются
• Монетки подпрыгивают
📌 Даже минимальная анимация делает мир “живым”, а игру — опрятной.
✅ Эти простые приёмы = результат, будто над проектом работал дизайнер.
Please open Telegram to view this post
VIEW IN TELEGRAM
Куда вы выкладываете свои игры?
Anonymous Poll
40%
Яндекс игры
32%
Itch io
14%
Google play / App Store
14%
Steam
2%
Свой вариант в комментариях
38%
Никуда
Для чего вы программируете?
Anonymous Poll
66%
Просто нравится
34%
Для небольшого заработка
44%
Для проживания на заработок
🎄6🔥3 2 2
void Print(params int[] numbers) => Console.WriteLine("Params");
void Print(int x) => Console.WriteLine("Single");
Print(1);🔥2
Media is too big
VIEW IN TELEGRAM
Привет геймдев-энтузиасты! 🎮 У нас горячий подарок для тех, кто хочет заглянуть под капот крутого проекта: разыгрываем полный исходник Minecraft Clicker на Unity!
Готовый кликер
Идеально для:
Подписаться на Akrus Games ❤️
Нажать кнопку "Участвовать"
До 25 июня 2025! Победителя выберем рандомом, результат закрепим тут.
Победитель один!
#розыгрыш #unity3d #gamedev #исходники #minecraft #кликер #AkrusGames #программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
var list = new List<int> { 1, 2, 3 };
foreach (var item in list)
{
if (item == 2)
list.Remove(item);
}Что произойдёт?
Anonymous Quiz
28%
Удалит элемент 2 и завершит цикл
33%
Выбросит InvalidOperationException
3%
Ничего не произойдёт
36%
Удалит элемент и продолжит цикл
Akrus Games | Unity
🎯 Цель — 200 подписчиков! Друзья, как только наш канал набирает 200 подписчиков, я выпускаю Telegram-бота, который будет вашим карманным помощником по Unity и C#! 💡 В боте вы найдёте: — Самые полезные фишки по Unity — Советы по C# — Подборки курсов, книг…
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🔥3😱3
🔍 Важно!
Похоже, на канал недавно накрутили около 100 подписчиков без моего ведома. Это была не моя инициатива и, скорее всего, сделано сторонними людьми — возможно, враждебно или «в подарок» от каких-то сервисов.
❗️ Я выступаю против накруток, потому что они портят статистику и мешают понимать, кто действительно читает канал.
В ближайшее время постараюсь удалить неактивных ботов и вернуть всё в норму.
Спасибо, что вы со мной — настоящая, живая аудитория❤️
Продолжаем делать годный контент!
Похоже, на канал недавно накрутили около 100 подписчиков без моего ведома. Это была не моя инициатива и, скорее всего, сделано сторонними людьми — возможно, враждебно или «в подарок» от каких-то сервисов.
В ближайшее время постараюсь удалить неактивных ботов и вернуть всё в норму.
Спасибо, что вы со мной — настоящая, живая аудитория
Продолжаем делать годный контент!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤18😱6🔥5 1 1
#screenshotsaturday
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
🚀 5 приёмов C# и Unity, которые отличают джуна от мидла
📌 Сохрани — это шаг в сторону масштабируемого и профессионального кода
1️⃣ Action и Func — универсальные делегаты
📌 Упрощают объявления и колбэки. Подходят для:
• UI-событий
• игровых триггеров
• асинхронных проверок
Вместо создания собственного делегата — просто:
2️⃣ LINQ + лямбды — фильтрация без циклов
📌 Сокращает код и улучшает читаемость.
Идеально для выбора целей, фильтрации объектов и логики на старте.
⚠️ Внутри Update() не злоупотребляй — может создать GC.
3️⃣ Extension Methods — пиши C#, будто это твой движок
📌 transform.position = pos.WithY(0); — читается, как родной синтаксис.
Абстрагируй повторы, работай с Transform, GameObject, string, float и т.д.
4️⃣ ScriptableObject — переменные и сигналы между сценами
📌 Используется как:
• runtime переменная (настройки, состояния)
• Event-центр (через UnityEvent или кастомные Raise())
• конфигурация апгрейдов / миссий
Поддерживает инспекторную настройку и разделение логики от данных.
5️⃣ Editor-инструменты — экономь себе часы
📌 Один клик — и готово.
Создавай себе:
• дебаг-кнопки
• редакторы данных
• инструменты генерации
Хочешь больше — используй EditorWindow, PropertyDrawer, AssetPostprocessor.
💬 Хочешь идти в senior — думай об удобстве других, переиспользуемости и времени команды.
🔔 Подписывайся — впереди про архитектуру, DI, UI-системы и async паттерны
👉 Akrus Games | Unity
public Action OnFinished;
public Func<bool> IsConditionMet;
📌 Упрощают объявления и колбэки. Подходят для:
• UI-событий
• игровых триггеров
• асинхронных проверок
Вместо создания собственного делегата — просто:
OnFinished?.Invoke();
var enemies = allUnits.Where(u => u.IsEnemy && u.HP > 0).ToList();
📌 Сокращает код и улучшает читаемость.
Идеально для выбора целей, фильтрации объектов и логики на старте.
⚠️ Внутри Update() не злоупотребляй — может создать GC.
public static Vector3 WithY(this Vector3 v, float y) => new(v.x, y, v.z);
📌 transform.position = pos.WithY(0); — читается, как родной синтаксис.
Абстрагируй повторы, работай с Transform, GameObject, string, float и т.д.
[CreateAssetMenu]
public class FloatVariable : ScriptableObject {
public float Value;
}
📌 Используется как:
• runtime переменная (настройки, состояния)
• Event-центр (через UnityEvent или кастомные Raise())
• конфигурация апгрейдов / миссий
Поддерживает инспекторную настройку и разделение логики от данных.
[MenuItem("Tools/Clear PlayerPrefs")]
private static void ClearPrefs() => PlayerPrefs.DeleteAll();📌 Один клик — и готово.
Создавай себе:
• дебаг-кнопки
• редакторы данных
• инструменты генерации
Хочешь больше — используй EditorWindow, PropertyDrawer, AssetPostprocessor.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥3 2
Как делать UI, который не ломается
📌 Middle-уровень — это не просто «UI работает». Это UI, который масштабируется, адаптируется и не разваливается на любом экране.
1️⃣ Canvas Scaler: Scale With Screen Size
📌 UI масштабируется пропорционально экрану. Не забудь установить Screen Match Mode в Match Width Or Height.
2️⃣ Layout Group + ContentSizeFitter — друг, но с оглядкой
📌 Уходи от фиксированных размеров. Пусть элементы растягиваются и подстраиваются.
НО: ContentSizeFitter тяжёлый в Scroll View. На списках — лучше вручную контролировать размеры через LayoutElement.
3️⃣ Safe Area — must have на мобилках
📌 Используй Screen.safeArea и адаптируй UI под вырезы, чёлки, панели.
Особенно важно для iPhone X+, Samsung с закруглёнными краями.
Есть готовые плагины (например, SafeArea.cs) — или пиши свой, обрезая RectTransform под safeArea.
4️⃣ Anchors и Pivot — основа адаптивного UI
📌 Никогда не ставь UI в абсолютные координаты.
Используй anchorMin и anchorMax — например, чтобы кнопка «назад» всегда оставалась в левом верхнем углу, независимо от разрешения.
5️⃣ UI Manager — централизованное управление интерфейсом
📌 Используй один UIManager, который управляет:
• текущими экранами (через стэк или FSM)
• открытием/закрытием окон
• блокировкой ввода
• переходами (анимации, звук, пауза)
💡 Идеально: событийная архитектура. Панель не знает о других панелях — всё через UIManager.Show("Settings").
🎯 Почему это важно?
UI — это первое, что видит игрок. Даже простая игра выглядит “профессионально”, если у неё стабильный и адаптивный интерфейс.
💬 Что у тебя чаще всего ломается в UI?
🔔 Подписывайся — впереди посты про оптимизацию, UI-архитектуру и best practices
👉 Akrus Games | Unity
📌 Middle-уровень — это не просто «UI работает». Это UI, который масштабируется, адаптируется и не разваливается на любом экране.
UI Scale Mode: Scale With Screen Size
Reference Resolution: 1920 x 1080 (или 1080 x 1920 для вертикали)📌 UI масштабируется пропорционально экрану. Не забудь установить Screen Match Mode в Match Width Or Height.
📌 Уходи от фиксированных размеров. Пусть элементы растягиваются и подстраиваются.
НО: ContentSizeFitter тяжёлый в Scroll View. На списках — лучше вручную контролировать размеры через LayoutElement.
📌 Используй Screen.safeArea и адаптируй UI под вырезы, чёлки, панели.
Особенно важно для iPhone X+, Samsung с закруглёнными краями.
Есть готовые плагины (например, SafeArea.cs) — или пиши свой, обрезая RectTransform под safeArea.
📌 Никогда не ставь UI в абсолютные координаты.
Используй anchorMin и anchorMax — например, чтобы кнопка «назад» всегда оставалась в левом верхнем углу, независимо от разрешения.
📌 Используй один UIManager, который управляет:
• текущими экранами (через стэк или FSM)
• открытием/закрытием окон
• блокировкой ввода
• переходами (анимации, звук, пауза)
💡 Идеально: событийная архитектура. Панель не знает о других панелях — всё через UIManager.Show("Settings").
🎯 Почему это важно?
UI — это первое, что видит игрок. Даже простая игра выглядит “профессионально”, если у неё стабильный и адаптивный интерфейс.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯5 2❤1 1
Akrus Games | Unity
Итоги уже завтра 1️⃣
🎰 не забываем участвовать ‼️ ‼️
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯5 2
Архитектурные ошибки, которые мешают скейлиться
📌 Вот что часто делает мидл, когда ещё не думает как senior:
1️⃣ Всё в одном MonoBehaviour
📌 Разделяй по слоям:
• Model — данные (например, ScriptableObject, runtime state)
• View — отображение и UI (MonoBehaviour с UI-ссылками)
• Controller/Manager — логика и управление
🧠 Это основа MVC / MVVM / ECS — двигайся в сторону слабосвязной архитектуры.
2️⃣ Прямые ссылки между объектами
📌 Лучше через:
• Action и event-события
• интерфейсы (например, IDamageable)
• ScriptableObject-сигналы (EventChannel)
• Service Locator / Dependency Injection (Zenject, Extenject)
3️⃣ Нет централизованного GameManager или FSM
📌 Когда логика разбросана по сцене — сложно дебажить, сохранять и управлять состоянием игры.
🛠️ Сделай GameState-машину:
Добавь централизованную точку входа:
• UIManager
• SceneController
• AudioManager
4️⃣ Мешанина из public переменных
📌 Используй:
🧠 Это защищает от случайных изменений и делает код самодокументируемым.
5️⃣ Нет разделения Editor и Runtime
📌 Всё, что относится к редактору (например, EditorGUILayout, Handles, MenuItem) — в папку /Editor и под #if UNITY_EDITOR.
Если этого не сделать:
• код попадёт в билд (ошибка)
• появится ненужный вес
• сломается на мобильных/в WebGL
💡 Средний уровень — это уже мышление архитектора: ты создаёшь систему, которую другие смогут поддерживать, расширять и не бояться трогать.
💬 Хочешь пост про конкретные архитектурные подходы: EventBus, ScriptableSignals или Scene Flow?
🔔 Подписывайся — впереди про UI-архитектуру, async-менеджеры и паттерны уровня Senior
👉 Akrus Games | Unity
📌 Вот что часто делает мидл, когда ещё не думает как senior:
// И логика, и UI, и данные — всё в одном классе 😵
📌 Разделяй по слоям:
• Model — данные (например, ScriptableObject, runtime state)
• View — отображение и UI (MonoBehaviour с UI-ссылками)
• Controller/Manager — логика и управление
🧠 Это основа MVC / MVVM / ECS — двигайся в сторону слабосвязной архитектуры.
enemy.healthBar.SetValue(enemy.hp); // жёсткая связь
📌 Лучше через:
• Action и event-события
• интерфейсы (например, IDamageable)
• ScriptableObject-сигналы (EventChannel)
• Service Locator / Dependency Injection (Zenject, Extenject)
📌 Когда логика разбросана по сцене — сложно дебажить, сохранять и управлять состоянием игры.
🛠️ Сделай GameState-машину:
GameState.Menu → GameState.Playing → GameState.PausedДобавь централизованную точку входа:
• UIManager
• SceneController
• AudioManager
public int hp; // открыто для всех
📌 Используй:
[SerializeField] private int hp;
public int HP => hp;
🧠 Это защищает от случайных изменений и делает код самодокументируемым.
📌 Всё, что относится к редактору (например, EditorGUILayout, Handles, MenuItem) — в папку /Editor и под #if UNITY_EDITOR.
Если этого не сделать:
• код попадёт в билд (ошибка)
• появится ненужный вес
• сломается на мобильных/в WebGL
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤2 2 2 1 1