По итогам голосования поиграем с вами в пвп в следующие выходные.
Чтобы не засорять канал, вся инфа будет здесь https://t.me/AkrusDnevnik
Чтобы не засорять канал, вся инфа будет здесь https://t.me/AkrusDnevnik
❤2🔥2😁1
⚡️ Unity: шпаргалка по C# LINQ
Сохраняй — эти методы ускорят твой код в разы. LINQ — это мощь для фильтрации, сортировки и выборки данных.
🔸 Основные методы:
Where — фильтрация.
Select — преобразование.
First / FirstOrDefault — первый элемент.
OrderBy / OrderByDescending — сортировка.
Any / All — проверка условий.
Count — количество.
💥 Важно в Unity:
• ToArray() / ToList() — если результат нужен многократно, материализуй запрос. Иначе он будет вычисляться заново.
• Избегай в Update — LINQ создает аллокации. В циклах это приводит к сборкам мусора (GC).
• Single() / SingleOrDefault() — строгий поиск одного элемента. Выбросит исключение, если элементов нет или их несколько.
🚀 Пример в деле:
📌 Сохрани шпаргалку — LINQ сэкономит часы рутины.
💬 Как часто используешь LINQ в проектах?
🔔Подпишись — еще больше шпаргалок и фишек по C# и Unity уже готовы!
👉Akrus Games | Unity
Сохраняй — эти методы ускорят твой код в разы. LINQ — это мощь для фильтрации, сортировки и выборки данных.
🔸 Основные методы:
Where — фильтрация.
var enemies = allUnits.Where(unit => unit.IsEnemy);
Select — преобразование.
var names = players.Select(player => player.Name);
First / FirstOrDefault — первый элемент.
var target = enemies.First(e => e.Health < 10); // FirstOrDefault вернёт null, если ничего не найдено.
OrderBy / OrderByDescending — сортировка.
var sortedByScore = players.OrderByDescending(p => p.Score);
Any / All — проверка условий.
bool isAnyAlive = enemies.Any(e => e.IsAlive);
bool allReady = players.All(p => p.IsReady);
Count — количество.
int aliveCount = enemies.Count(e => e.IsAlive);
💥 Важно в Unity:
• ToArray() / ToList() — если результат нужен многократно, материализуй запрос. Иначе он будет вычисляться заново.
var list = enemies.Where(e => e.IsVisible).ToList();
• Избегай в Update — LINQ создает аллокации. В циклах это приводит к сборкам мусора (GC).
• Single() / SingleOrDefault() — строгий поиск одного элемента. Выбросит исключение, если элементов нет или их несколько.
🚀 Пример в деле:
// Найти ближайшего живого врага
var nearestEnemy = enemies
.Where(e => e.IsAlive)
.OrderBy(e => Vector3.Distance(transform.position, e.Position))
.FirstOrDefault();
📌 Сохрани шпаргалку — LINQ сэкономит часы рутины.
💬 Как часто используешь LINQ в проектах?
🔔Подпишись — еще больше шпаргалок и фишек по C# и Unity уже готовы!
👉Akrus Games | Unity
🔥8❤6🎄1 1
⚡️ Pattern Matching в C# — твой чит-код для чистого кода
Устал от горы
🎯 2 способа использовать Pattern Matching уже сегодня:
1️⃣ Type Patterns — замена громоздким проверкам типа
2️⃣ Property Patterns — проверяй свойства объектов
💡 Запомни:
-
-
-
🚀 Результат: Меньше кода, меньше ошибок, лучше читаемость. Особенно в игровой логике!
🔔 Подпишись — каждый день полезные фишки по Unity и C#
Устал от горы
if-else и switch? Pattern Matching — это как «умный» switch на стероидах. Проверяй тип, структуру и значения в одной строке.🎯 2 способа использовать Pattern Matching уже сегодня:
1️⃣ Type Patterns — замена громоздким проверкам типа
// Было:
if (enemy is Boss)
{
((Boss)enemy).SpecialAttack();
}
// Стало:
if (enemy is Boss boss)
{
boss.SpecialAttack(); // Без кастов!
}
// Идеально для обработки разных типов врагов:
void ProcessEnemy(Enemy enemy)
{
switch (enemy)
{
case Boss b:
b.StartBossFight();
break;
case FlyingEnemy f when f.IsFlying:
f.DiveAttack();
break;
default:
enemy.Patrol();
break;
}
}
2️⃣ Property Patterns — проверяй свойства объектов
// Мощная фильтрация прямо в switch:
string GetAttackType(Weapon weapon) => weapon switch
{
{ Damage: > 100, Type: "Fire" } => "Критическая огненная атака!",
{ Ammo: 0 } => "Оружие пусто!",
_ => "Обычный удар"
};
// Отлично для системы диалогов:
var reaction = npc switch
{
{ Mood: "Angry", Level: > 5 } => "Гневная реплика",
{ QuestCompleted: true } => "Благодарность",
_ => "Стандартный диалог"
};
💡 Запомни:
-
is с деконструкцией — убирает касты-
switch с паттернами — заменяет гигантские if-else-
when добавляет условия🚀 Результат: Меньше кода, меньше ошибок, лучше читаемость. Особенно в игровой логике!
#️⃣ P.S. Используешь уже? Делись кейсами в комментах!🔔 Подпишись — каждый день полезные фишки по Unity и C#
🔥7❤4🎄1 1
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ C# Records в Unity: данные без головной боли
Records — это иммутабельные данные «в одну строчку». Идеально для конфигов, событий, DTO.
Базовый пример:
✅ Сам генерирует конструктор, свойства, Equals, GetHashCode, ToString()
✅ Неизменяемый — защита от случайных багов
Records с методами:
💡 Ключевое слово
Где использовать в Unity:
• Настройки оружия, персонажей, предметов
• События (например,
• Данные для сохранений
⚠️ Важно: Records — ссылочные типы, но с value-семантикой. Отлично работают в Unity 2020.3+
Плюсы:
• Меньше кода
• Безопасность данных
• Читаемость
Используешь Records? Пиши в комментах! 🔥
👉Akrus Games | Unity
Records — это иммутабельные данные «в одну строчку». Идеально для конфигов, событий, DTO.
Базовый пример:
public record WeaponData(int Damage, float FireRate, string Name);
✅ Сам генерирует конструктор, свойства, Equals, GetHashCode, ToString()
✅ Неизменяемый — защита от случайных багов
Records с методами:
public record EnemyData(int Health, int Speed)
{
public bool IsAlive => Health > 0;
public EnemyData WithDoubleSpeed() => this with { Speed = Speed * 2 };
}
💡 Ключевое слово
with создает копию с изменениями — супер для модификаций!Где использовать в Unity:
• Настройки оружия, персонажей, предметов
• События (например,
record DamageEvent(int Amount, GameObject Target))• Данные для сохранений
⚠️ Важно: Records — ссылочные типы, но с value-семантикой. Отлично работают в Unity 2020.3+
Плюсы:
• Меньше кода
• Безопасность данных
• Читаемость
Используешь Records? Пиши в комментах! 🔥
👉Akrus Games | Unity
🎄4❤3 2
⚡️ Unity: C# Data-Oriented Design для максимальной производительности
Устал от медленного foreach по тысячам объектов? Struct of Arrays — это подход, который ускоряет обработку данных, как в настоящем ECS.
❌ Проблема стандартного подхода:
• Кэш-промахи процессора
• Разбросанные в памяти объекты
• Виртуальные вызовы
✅ Решение: Struct of Arrays (основа ECS)
1️⃣ Правильная структура данных:
Данные хранятся в плотных массивах — процессор обрабатывает их последовательно, без промахов кэша.
2️⃣ Оптимизированная итерация:
• Нет виртуальных вызовов
• Данные последовательны в кэше
• Автоматическая векторизация
• Параллелизация
💡 Реальный результат:
Обработка 10 000 юнитов ускоряется в 2-5 раз по сравнению с GameObject/GetComponent в цикле. Даже против готового списка MonoBehaviour выигрыш за счет кэш-дружественности.
🚀 Следующий уровень:
Unity.Entities (DOTS) — автоматическое управление чанками, параллельная обработка и Burst компиляция.
💬 Используешь плотные массивы для данных? Делитесь опытом в комментариях!
🔔 Подпишись — больше фишек для инди-оптимизации впереди.
👉Akrus Games | Unity
#Unity3D #UnityOptimization #ECS #DOTS #CSharp
Устал от медленного foreach по тысячам объектов? Struct of Arrays — это подход, который ускоряет обработку данных, как в настоящем ECS.
❌ Проблема стандартного подхода:
foreach (var enemy in enemies) {
enemy.Update(); // Кэш-промахи, разбросанные объекты в памяти
}• Кэш-промахи процессора
• Разбросанные в памяти объекты
• Виртуальные вызовы
✅ Решение: Struct of Arrays (основа ECS)
1️⃣ Правильная структура данных:
public struct EnemyChunk {
public Vector3[] positions;
public float[] healths;
public int count;
}Данные хранятся в плотных массивах — процессор обрабатывает их последовательно, без промахов кэша.
2️⃣ Оптимизированная итерация:
for (int i = 0; i < chunk.count; i++) {
chunk.positions[i] += Vector3.forward * speed;
chunk.healths[i] -= Time.deltaTime;
}• Нет виртуальных вызовов
• Данные последовательны в кэше
• Автоматическая векторизация
• Параллелизация
💡 Реальный результат:
Обработка 10 000 юнитов ускоряется в 2-5 раз по сравнению с GameObject/GetComponent в цикле. Даже против готового списка MonoBehaviour выигрыш за счет кэш-дружественности.
🚀 Следующий уровень:
Unity.Entities (DOTS) — автоматическое управление чанками, параллельная обработка и Burst компиляция.
💬 Используешь плотные массивы для данных? Делитесь опытом в комментариях!
🔔 Подпишись — больше фишек для инди-оптимизации впереди.
👉Akrus Games | Unity
#Unity3D #UnityOptimization #ECS #DOTS #CSharp
❤7 1
⚡️ Unity: шпаргалка по импорту изображений
Сохрани, чтобы не тратить часы на артефакты и размытые текстуры!
📌 2D Спрайты (UI, 2D игра)
1. Texture Type →
2. Sprite Mode:
* Один объект →
* Лист анимации →
3. Pixels Per Unit:
* Пиксель-арт: 16, 32, 64 (кратно размеру спрарита)
* HD графика: 100-200
📌 Текстуры для 3D
1. Texture Type →
2. Wrap Mode →
3. Filter Mode →
🔥 Важные галочки:
* Generate Mip Maps ✅ — для 3D-объектов (сглаживание на расстоянии)
* sRGB ✅ — для цветных текстур, ❌ — для масок и карт нормалей
* Compression →
💡 Совет: Всегда выставляй размер по степени двойки (512x512, 1024x1024) — это снимет 90% проблем со сжатием!
📂 Исходники в PNG — Unity любит его больше всего.
💬 А ты часто настраиваешь импорт текстур вручную?
🔔 Подпишись — еще больше шпаргалок по юнити впереди!
👉Akrus Games | Unity
Сохрани, чтобы не тратить часы на артефакты и размытые текстуры!
📌 2D Спрайты (UI, 2D игра)
1. Texture Type →
Sprite (2D and UI)2. Sprite Mode:
* Один объект →
Single* Лист анимации →
Multiple (не забудь Sprite Editor > Slice!)3. Pixels Per Unit:
* Пиксель-арт: 16, 32, 64 (кратно размеру спрарита)
* HD графика: 100-200
📌 Текстуры для 3D
1. Texture Type →
Default2. Wrap Mode →
Repeat (для тайлющихся поверхностей)3. Filter Mode →
Bilinear (стандарт), для пиксель-арта → Point (no filter)🔥 Важные галочки:
* Generate Mip Maps ✅ — для 3D-объектов (сглаживание на расстоянии)
* sRGB ✅ — для цветных текстур, ❌ — для масок и карт нормалей
* Compression →
High Quality для финальной сборки💡 Совет: Всегда выставляй размер по степени двойки (512x512, 1024x1024) — это снимет 90% проблем со сжатием!
📂 Исходники в PNG — Unity любит его больше всего.
💬 А ты часто настраиваешь импорт текстур вручную?
🔔 Подпишись — еще больше шпаргалок по юнити впереди!
👉Akrus Games | Unity
❤8🎄1 1 1
🎨 Unity: как подбирать цвета для графики?
Сохрани — эти методы спасут тебя от хаотичных цветовых решений и помогут создать визуально целостную игру даже без дизайнерского опыта.
✅ Метод 1: Готовые палитры — быстро и надёжно
Используй проверенные сайты с готовыми палитрами:
• Lospec (https://lospec.com/palette-list) — здесь собраны палитры для пиксель-арта и низкополигональной графики. Идеально для ретро-стиля.
• Coolors (https://coolors.co/) — генератор палитр. Жми пробел — получаешь новую комбинацию. Экспортируй в PNG или сохраняй HEX-коды.
💡 Как использовать в Unity:
1. Скопируй HEX-коды (например, #A3B2C1).
2. В инспекторе материала или UI-элемента вставь значение в поле цвета.
✅ Метод 2: Создай свою палитру по принципу 60-30-10
Раздели цвета сцены на три группы:
• 60% — основной цвет (фон, земля, стены)
• 30% — дополнительный (персонажи, ключевые объекты)
• 10% — акцентный (интерактивные элементы, монеты, UI)
💡 Пример для платформера:
Основной — приглушённый синий (небо)
Дополнительный — тёплый серый (платформы)
Акцентный — яркий жёлтый (монеты)
⚠️ Что избегать:
• Слишком ярких и чистых цветов — снижай насыщенность (Saturation)
• Отсутствия контраста между фоном и игровыми объектами
📌 Краткий чек-лист:
1. Выбери стиль (ретро, низкополи, минимализм)
2. Возьми готовую палитру или создай по правилу 60-30-10
3. Настрой в Unity через Color Picker
4. Проверь, что важные элементы контрастируют с фоном
💬 А ты как подбираешь цвета? Делись своими палитрами в комментариях!
🔔 Подпишись — скоро расскажем про создание материалов в URP и Shader Graph
👉Akrus Games | Unity
Сохрани — эти методы спасут тебя от хаотичных цветовых решений и помогут создать визуально целостную игру даже без дизайнерского опыта.
✅ Метод 1: Готовые палитры — быстро и надёжно
Используй проверенные сайты с готовыми палитрами:
• Lospec (https://lospec.com/palette-list) — здесь собраны палитры для пиксель-арта и низкополигональной графики. Идеально для ретро-стиля.
• Coolors (https://coolors.co/) — генератор палитр. Жми пробел — получаешь новую комбинацию. Экспортируй в PNG или сохраняй HEX-коды.
💡 Как использовать в Unity:
1. Скопируй HEX-коды (например, #A3B2C1).
2. В инспекторе материала или UI-элемента вставь значение в поле цвета.
✅ Метод 2: Создай свою палитру по принципу 60-30-10
Раздели цвета сцены на три группы:
• 60% — основной цвет (фон, земля, стены)
• 30% — дополнительный (персонажи, ключевые объекты)
• 10% — акцентный (интерактивные элементы, монеты, UI)
💡 Пример для платформера:
Основной — приглушённый синий (небо)
Дополнительный — тёплый серый (платформы)
Акцентный — яркий жёлтый (монеты)
⚠️ Что избегать:
• Слишком ярких и чистых цветов — снижай насыщенность (Saturation)
• Отсутствия контраста между фоном и игровыми объектами
📌 Краткий чек-лист:
1. Выбери стиль (ретро, низкополи, минимализм)
2. Возьми готовую палитру или создай по правилу 60-30-10
3. Настрой в Unity через Color Picker
4. Проверь, что важные элементы контрастируют с фоном
💬 А ты как подбираешь цвета? Делись своими палитрами в комментариях!
🔔 Подпишись — скоро расскажем про создание материалов в URP и Shader Graph
👉Akrus Games | Unity
❤10🎄2 1
⚡️ В каком порядке разрабатывать игру в Unity, чтобы не забросить через неделю
Сохраняй эту шпаргалку! Правильный порядок спасет от хаоса в папках, бесконечных переделок и потери мотивации. Два главных пути.
🎯 Вариант 1: Классический (от идеи к полишу)
Идеален для небольшой законченной игры. Шаг за шагом, без скачков.
1️⃣ Ядро геймплея (Core Gameplay Loop)
· Набросай сцену из кубов и сфер.
· Напиши самый базовый код для управления и основной механики (прыжок, стрельба, сбор).
· Цель: за 5 минут получить «игрушку», в которую уже можно поиграть. Если неинтересно даже на кубах — меняй механику.
2️⃣ Прототип уровня (First Playable)
· Создай один цельный тестовый уровень, используя простые ассеты (ProBuilder, бесплатные примитивы).
· Добавь все ключевые механики: победа, поражение, базовый UI (очки, здоровье).
· Протестируй на друзьях. Собери первую обратную связь.
3️⃣ Архитектура и системы (Backbone)
· Приведи код в порядок. Вынеси данные в ScriptableObject.
· Настрой менеджеры (Game Manager, Audio Manager, Pooling).
· Добавь систему сохранений. Это фундамент, который сэкономит тебе месяцы позже.
4️⃣ Контент и визуал (Content & Polish)
· Только сейчас подключай финальные 3D-модели, анимации, текстуры.
· Настрой постобработку, свет, VFX.
· Добавь звуки и музыку. Сделай Juice (эффекты реакции, экранные тряски, плавные переходы).
5️⃣ Тесты и публикация (Final Stage)
· Жесткое тестирование на разных устройствах и разрешениях.
· Собери все билды (PC, Android, WebGL).
· Подготовь описание, иконки, скриншоты для магазина (Google Play, Itch.io).
🚀 Вариант 2: Гибкая сборка (сборка из готовых систем)
Для гиперказуалки, мобильного раннера или если хочешь быстро собрать MVP.
1️⃣ Готовый движок (Template)
· Возьми официальный Unity Template (например, Platformer Microgame) или качественный ассет с кодом.
· Быстро пробегись по коду, пойми его архитектуру.
2️⃣ Быстрая модификация (Rapid Prototyping)
· Подставь свои спрайты/модели в готовые префабы.
· Измени ключевые параметры (скорость, сила прыжка, генерация) под свою идею.
· Замени UI-элементы. Получи уникальный вид за пару часов.
3️⃣ Кастомизация и масштабирование (Make It Yours)
· Добавь 1-2 свои уникальные механики в существующую структуру.
· Настрой монетизацию (рекламу, IAP) через готовые ассеты.
· Создай несколько уровней через простой редактор (используй данные в JSON или Excel).
4️⃣ Полировка и выпуск (Quick Polish)
· Сделай яркий UI и добавь сочные эффекты (DOTween, Particle System).
· Протестируй, исправь критические баги.
· Собери билд и выложи.
✅ Главный совет: Не лезь в арт и сложный код, пока не доказал, что базовая механика «заходит». Итерации должны быть быстрыми. Версионируй проект (Git, Plastic SCM) после каждого крупного этапа.
📌 Сохрани эту схему, чтобы не потерять фокус.
💬А по какому пути идешь ты? Делись в комментариях!
🔔Подпишись — впереди ещё много четких гайдов.
👉Akrus Games | Unity
Сохраняй эту шпаргалку! Правильный порядок спасет от хаоса в папках, бесконечных переделок и потери мотивации. Два главных пути.
🎯 Вариант 1: Классический (от идеи к полишу)
Идеален для небольшой законченной игры. Шаг за шагом, без скачков.
1️⃣ Ядро геймплея (Core Gameplay Loop)
· Набросай сцену из кубов и сфер.
· Напиши самый базовый код для управления и основной механики (прыжок, стрельба, сбор).
· Цель: за 5 минут получить «игрушку», в которую уже можно поиграть. Если неинтересно даже на кубах — меняй механику.
2️⃣ Прототип уровня (First Playable)
· Создай один цельный тестовый уровень, используя простые ассеты (ProBuilder, бесплатные примитивы).
· Добавь все ключевые механики: победа, поражение, базовый UI (очки, здоровье).
· Протестируй на друзьях. Собери первую обратную связь.
3️⃣ Архитектура и системы (Backbone)
· Приведи код в порядок. Вынеси данные в ScriptableObject.
· Настрой менеджеры (Game Manager, Audio Manager, Pooling).
· Добавь систему сохранений. Это фундамент, который сэкономит тебе месяцы позже.
4️⃣ Контент и визуал (Content & Polish)
· Только сейчас подключай финальные 3D-модели, анимации, текстуры.
· Настрой постобработку, свет, VFX.
· Добавь звуки и музыку. Сделай Juice (эффекты реакции, экранные тряски, плавные переходы).
5️⃣ Тесты и публикация (Final Stage)
· Жесткое тестирование на разных устройствах и разрешениях.
· Собери все билды (PC, Android, WebGL).
· Подготовь описание, иконки, скриншоты для магазина (Google Play, Itch.io).
🚀 Вариант 2: Гибкая сборка (сборка из готовых систем)
Для гиперказуалки, мобильного раннера или если хочешь быстро собрать MVP.
1️⃣ Готовый движок (Template)
· Возьми официальный Unity Template (например, Platformer Microgame) или качественный ассет с кодом.
· Быстро пробегись по коду, пойми его архитектуру.
2️⃣ Быстрая модификация (Rapid Prototyping)
· Подставь свои спрайты/модели в готовые префабы.
· Измени ключевые параметры (скорость, сила прыжка, генерация) под свою идею.
· Замени UI-элементы. Получи уникальный вид за пару часов.
3️⃣ Кастомизация и масштабирование (Make It Yours)
· Добавь 1-2 свои уникальные механики в существующую структуру.
· Настрой монетизацию (рекламу, IAP) через готовые ассеты.
· Создай несколько уровней через простой редактор (используй данные в JSON или Excel).
4️⃣ Полировка и выпуск (Quick Polish)
· Сделай яркий UI и добавь сочные эффекты (DOTween, Particle System).
· Протестируй, исправь критические баги.
· Собери билд и выложи.
✅ Главный совет: Не лезь в арт и сложный код, пока не доказал, что базовая механика «заходит». Итерации должны быть быстрыми. Версионируй проект (Git, Plastic SCM) после каждого крупного этапа.
📌 Сохрани эту схему, чтобы не потерять фокус.
💬А по какому пути идешь ты? Делись в комментариях!
🔔Подпишись — впереди ещё много четких гайдов.
👉Akrus Games | Unity
❤9🔥3 1
Unity: Addressable Assets — загрузка ассетов по-взрослому
Основная фишка: Ты грузишь ассет по строковому адресу (например,
Базовое использование:
1. Помечай любой ассет как
2. Присвой ему адрес (например,
3. Грузи в коде:
Плюсы:
• Нет лимита
• Умное кеширование.
• Возможность хотфиксов (обновлять контент после сборки).
• Четкий контроль над памятью.
Переходи на Addressables в новом проекте — не пожалеешь.
📌 Подробный гайд по переходу с Resources — в следующих постах. Жди!
👉Akrus Games | Unity
Resources.Load устарел. Addressables — система для умной подгрузки чего угодно: сцены, префабы, аудио, конфиги.Основная фишка: Ты грузишь ассет по строковому адресу (например,
"Assets/Prefabs/Enemies/Dragon.prefab"). Система сама решает, откуда его взять: с диска, из локального кеша или с сервера.Базовое использование:
1. Помечай любой ассет как
Addressable (чекбокс в инспекторе).2. Присвой ему адрес (например,
"BigDragon").3. Грузи в коде:
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
AsyncOperationHandle<GameObject> handle = Addressables.LoadAssetAsync<GameObject>("BigDragon");
handle.Completed += (operation) => {
if (operation.Status == AsyncOperationStatus.Succeeded) {
GameObject dragon = operation.Result;
Instantiate(dragon);
}
};
Плюсы:
• Нет лимита
Resources.• Умное кеширование.
• Возможность хотфиксов (обновлять контент после сборки).
• Четкий контроль над памятью.
Переходи на Addressables в новом проекте — не пожалеешь.
📌 Подробный гайд по переходу с Resources — в следующих постах. Жди!
👉Akrus Games | Unity
❤8 1
Unity: [Editor] OnValidate() и его продвинутое применение
Не просто для проверки полей!
Используй для:
1️⃣ Валидации данных и автозаполнения.
2️⃣ Генерации уникальных ID для сохранения.
Важно: Не используй для игровой логики (не работает в билде!). Только для настройки в редакторе.
💬 Используешь OnValidate для чего-то ещё? Делися в комментах!
👉Akrus Games | Unity
Не просто для проверки полей!
OnValidate() вызывается при изменении скрипта в инспекторе или загрузке сцены. Идеально для автоматической настройки.Используй для:
1️⃣ Валидации данных и автозаполнения.
public EnemyType type;
private SpriteRenderer _sprite;
void OnValidate() {
if (_sprite == null) _sprite = GetComponent<SpriteRenderer>();
_sprite.color = type.color; // Цвет меняется сразу в инспекторе!
}
2️⃣ Генерации уникальных ID для сохранения.
public string uid;
void OnValidate() {
if (string.IsNullOrEmpty(uid)) uid = Guid.NewGuid().ToString();
}
Важно: Не используй для игровой логики (не работает в билде!). Только для настройки в редакторе.
💬 Используешь OnValidate для чего-то ещё? Делися в комментах!
👉Akrus Games | Unity
❤6🔥3 2 1
Unity: Custom Editor — ускорь рутинную настройку
Тратишь часы на расстановку однотипных объектов? Напиши свой инструмент за 10 минут.
Задача: Есть скрипт
1. Создай скрипт редактора в папке `Editor/`:
2. Теперь в инспекторе компонента `SpawnPoint` появится твоя кнопка. Нажал — объект «упал» на коллайдер ниже.
С этим подходом можно: массово редактировать объекты, создавать свои слайдеры, визуализировать данные. Экономит кучу времени на дизайне уровней.
🚀 Автоматизируй рутину!
👉Akrus Games | Unity
Тратишь часы на расстановку однотипных объектов? Напиши свой инструмент за 10 минут.
Задача: Есть скрипт
SpawnPoint. Хочешь кнопку в инспекторе, которая ставит объект на землю (Raycast).1. Создай скрипт редактора в папке `Editor/`:
using UnityEditor;
using UnityEngine;
[CustomEditor(typeof(SpawnPoint))]
public class SpawnPointEditor : Editor {
public override void OnInspectorGUI() {
DrawDefaultInspector(); // Рисует стандартные поля
SpawnPoint spawnPoint = (SpawnPoint)target;
if (GUILayout.Button("Поставить на землю")) {
Undo.RecordObject(spawnPoint.transform, "Move to ground");
if (Physics.Raycast(spawnPoint.transform.position, Vector3.down, out RaycastHit hit)) {
spawnPoint.transform.position = hit.point;
}
EditorUtility.SetDirty(spawnPoint); // Сохраняем изменение
}
}
}
2. Теперь в инспекторе компонента `SpawnPoint` появится твоя кнопка. Нажал — объект «упал» на коллайдер ниже.
С этим подходом можно: массово редактировать объекты, создавать свои слайдеры, визуализировать данные. Экономит кучу времени на дизайне уровней.
🚀 Автоматизируй рутину!
👉Akrus Games | Unity
❤5
Unity: Debug.Log — твой продвинутый инструмент отладки
1. Раскрась логи.
Передай второй аргумент —
2. Выводи пути к объектам.
Это покажет полную иерархию
3. Используй условия и фильтры.
Убери галочку у
✅ Логируй с умом, и консоль станет твоим лучшим помощником, а не свалкой текста.
📌 Сохрани шпаргалку!
👉Akrus Games | Unity
Debug.Log("Работает!") — это база. Вот как выжать из него максимум.1. Раскрась логи.
Передай второй аргумент —
Color или Hex код (только в Editor!).Debug.Log("<color=green>Зелёный: Всё ОК</color>", this);
Debug.Log("<color=#FFA500>Оранжевый: Внимание!</color>");2. Выводи пути к объектам.
Debug.Log($"Объект {gameObject.name} уничтожен. Путь: {GetPath(transform)}");
string GetPath(Transform tr) => tr.parent == null ? tr.name : GetPath(tr.parent) + "/" + tr.name;Это покажет полную иерархию
Level/Enemies/Skeleton.3. Используй условия и фильтры.
Debug.Log — дорогой вызов. Оберни его в #if UNITY_EDITOR или свой флаг.public static bool debugMode = true;
// ...
if (debugMode) Debug.Log("Детальная инфа для отладки");
Убери галочку у
debugMode в инспекторе — и спама в консоли не будет.✅ Логируй с умом, и консоль станет твоим лучшим помощником, а не свалкой текста.
📌 Сохрани шпаргалку!
👉Akrus Games | Unity
🔥4🎄4❤1
👁️ Как создать «зрение» ИИ врага в Unity?
Легко! ✨
Давайте рассмотрим процесс поэтапно:
1️⃣ 1. В двухмерном пространстве можно просто отправить один рейкаст в направлении игрока и проверить, происходит ли столкновение.
2️⃣ 2. Однако, если игрок слегка выглядывает из-за угла и его видно, то этот способ не подойдёт. В таком случае, следует отправлять несколько рейкастов веером и проверять, сталкиваются ли они с чем-либо.
3️⃣ 3. Но что делать в трёхмерном пространстве? Не отправлять же миллион рейкастов!
Для этого можно воспользоваться коллайдером, проверить столкновения и отправить пучок рейкастов! ⚡
---
👍 Ставьте лайк и подписывайтесь на канал!
#unity #charp #gamedev #ии #unity3d
Легко! ✨
Давайте рассмотрим процесс поэтапно:
1️⃣ 1. В двухмерном пространстве можно просто отправить один рейкаст в направлении игрока и проверить, происходит ли столкновение.
2️⃣ 2. Однако, если игрок слегка выглядывает из-за угла и его видно, то этот способ не подойдёт. В таком случае, следует отправлять несколько рейкастов веером и проверять, сталкиваются ли они с чем-либо.
3️⃣ 3. Но что делать в трёхмерном пространстве? Не отправлять же миллион рейкастов!
Для этого можно воспользоваться коллайдером, проверить столкновения и отправить пучок рейкастов! ⚡
---
"Все гениальное просто, все простое гениально"
👍 Ставьте лайк и подписывайтесь на канал!
#unity #charp #gamedev #ии #unity3d
❤5🔥4 1
⚔️ Unity: 3D или 2D? Выбирай правильное направление
Вечный вопрос для старта нового проекта. Кратко и по делу — чтобы ты не ошибся с выбором на старте.
🎨 Визуал и стиль
2D:
•Спрайты, пиксель-арт, вектор — полный контроль над каждым пикселем.
•Легче создать уникальный и цельный художественный стиль.
•Особенность: Вся «глубина» создаётся вручную (параллакс, слои).
3D:
•Объём, камеры с любого ракурса, динамическое освещение.
•Современный «AAA-вид» даже на простых моделях с постобработкой.
•Особенность: Требует навыков в моделировании, текстурировании, работе с освещением.
🎮 Геймдизайн и механики
2D:
•Идеально для платформеров, раннеров, казуальных и мобильных игр.
•Геймплей чаще линейный и сфокусированный.
•Фишка: Проще проектировать уровни и баланс — всё перед глазами.
3D:
•Полная свобода движения, открытые миры, сложные тактические бои.
•Механики могут быть глубокими (физика, стелс, исследование).
•Фишка: Сложнее отладить и сбалансировать — добавляется третья ось.
⚡️ Производительность и порты
2D:
•Меньше нагрузка на рендеринг — выше FPS на слабых устройствах.
•Проще портировать на мобилки и веб.
•Важно: Оптимизация спрайтов и анимаций — ключ к скорости.
3D:
•Автоматическая оптимизация (LOD, окклюзия) встроена, но её нужно настраивать.
•Тяжелее для мобилок — требует уменьшения полигонов, текстур, освещения.
•Важно: Пайплайн сложнее — от модели до импорта в Unity.
🚀 Сложность входа
2D:
•Проще начать: не нужны 3D-редакторы, можно рисовать даже в простых программах.
•Меньше подводных камней с камерой, управлением, физикой.
•Совет: Идеально для первого коммерческого проекта.
3D:
•Требует больше навыков: моделирование, UV-развёртка, скелетная анимация.
•Нужно разбираться в материалах, шейдерах, системах частиц для 3D.
•Совет: Выбирай 3D, если готов изучать Blender/Maya или работать в команде с художником.
✅ Итог:
•Выбирай 2D, если делаешь игру в одиночку, хочешь быстрее выпустить продукт и фокусируешься на геймплее, а не на графике.
•Выбирай 3D, если цель — современная графика, глубокие механики движения/боя и есть время/ресурсы на освоение полного пайплайна.
💬 А ты за какой подход? Делись в комментах!
📌 Сохрани пост, чтобы не потерять перед стартом нового проекта.
🔔 Подпишись — больше жёстких сравнений и практических гайдов по Unity!
👉Akrus Games | Unity
Вечный вопрос для старта нового проекта. Кратко и по делу — чтобы ты не ошибся с выбором на старте.
🎨 Визуал и стиль
2D:
•Спрайты, пиксель-арт, вектор — полный контроль над каждым пикселем.
•Легче создать уникальный и цельный художественный стиль.
•Особенность: Вся «глубина» создаётся вручную (параллакс, слои).
3D:
•Объём, камеры с любого ракурса, динамическое освещение.
•Современный «AAA-вид» даже на простых моделях с постобработкой.
•Особенность: Требует навыков в моделировании, текстурировании, работе с освещением.
🎮 Геймдизайн и механики
2D:
•Идеально для платформеров, раннеров, казуальных и мобильных игр.
•Геймплей чаще линейный и сфокусированный.
•Фишка: Проще проектировать уровни и баланс — всё перед глазами.
3D:
•Полная свобода движения, открытые миры, сложные тактические бои.
•Механики могут быть глубокими (физика, стелс, исследование).
•Фишка: Сложнее отладить и сбалансировать — добавляется третья ось.
⚡️ Производительность и порты
2D:
•Меньше нагрузка на рендеринг — выше FPS на слабых устройствах.
•Проще портировать на мобилки и веб.
•Важно: Оптимизация спрайтов и анимаций — ключ к скорости.
3D:
•Автоматическая оптимизация (LOD, окклюзия) встроена, но её нужно настраивать.
•Тяжелее для мобилок — требует уменьшения полигонов, текстур, освещения.
•Важно: Пайплайн сложнее — от модели до импорта в Unity.
🚀 Сложность входа
2D:
•Проще начать: не нужны 3D-редакторы, можно рисовать даже в простых программах.
•Меньше подводных камней с камерой, управлением, физикой.
•Совет: Идеально для первого коммерческого проекта.
3D:
•Требует больше навыков: моделирование, UV-развёртка, скелетная анимация.
•Нужно разбираться в материалах, шейдерах, системах частиц для 3D.
•Совет: Выбирай 3D, если готов изучать Blender/Maya или работать в команде с художником.
✅ Итог:
•Выбирай 2D, если делаешь игру в одиночку, хочешь быстрее выпустить продукт и фокусируешься на геймплее, а не на графике.
•Выбирай 3D, если цель — современная графика, глубокие механики движения/боя и есть время/ресурсы на освоение полного пайплайна.
💬 А ты за какой подход? Делись в комментах!
📌 Сохрани пост, чтобы не потерять перед стартом нового проекта.
🔔 Подпишись — больше жёстких сравнений и практических гайдов по Unity!
👉Akrus Games | Unity
❤4🔥1