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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
Unity: мониторинг через график в инспекторе

Зачем?
Вместо того чтобы следить за цифрами в консоли, наблюдай за изменением значений в реальном времени на наглядном графике. Идеально для отладки ИИ, баланса здоровья или скорости.

Как это работает?
Используем атрибут [SerializeField] и специальный тип AnimationCurve.

Как сделать?
1. Объяви публичное поле с типом AnimationCurve.
2. В коде добавляй в него ключевые точки с данными.

Простой пример: отслеживание дистанции до врага.

using UnityEngine;

public class EnemyAI : MonoBehaviour
{
[SerializeField] private AnimationCurve _distanceGraph;

void Update()
{
float distanceToPlayer = Vector3.Distance(transform.position, player.position);
// Добавляем новое значение на график (Время, Значение)
_distanceGraph.AddKey(Time.time, distanceToPlayer);
}
}

1. Добавь скрипт на объект.
2. В инспекторе появится график.
3. Запусти игру и смотри, как значение меняется в реальном времени!

Важно!
• Не забывай очищать график перед новым запуском игры (правый клик по графику -> «Clear All»).
• Используй для отладки сложных систем: HP, скорость, параметры анимаций.

Удобно и наглядно для тонкой настройки геймплея! 📊

#Unity #Unity3D #Gamedev #РазработкаИгр #Отладка
🔥731
Unity: по каким параметрам тестировать проект

Что проверять?
Не только на баги. Важна стабильность и производительность на разных устройствах.

Ключевые метрики:
- FPS (Кадры в секунду): Цель — стабильные 60 (или 30 для мобильных). Резкие просадки — повод для оптимизации.
- Память: Утечки оперативной памяти (RAM) и рост занимаемого места. Следи за мусором (Garbage Collection) в Profiler.
- Загрузка CPU/GPU: Профилировщик (Profiler) покажет, что нагружает систему: скрипты, рендеринг или физика.
- Нагрев и батарея: Сильный нагрев или быстрый разряд на мобильном устройстве — признак неоптимального кода.
- Размер билда: Следи, чтобы не подключались неиспользуемые ассеты и библиотеки.

Как тестировать?
1. В редакторе: Используй встроенный Profiler (Window > Analysis > Profiler).
2. На целевых устройствах: Собирай Development Build с флажком Autoconnect Profiler. Тестируй на слабом “железе”.
3. Стресс-тесты: Создай сцену с максимальным количеством объектов и эффектов, чтобы проверить пределы производительности.

Пример кода для вывода FPS:
public class FPSCounter : MonoBehaviour
{
private float count;

private IEnumerator Start()
{
while (true)
{
count = 1f / Time.unscaledDeltaTime;
yield return new WaitForSeconds(0.5f);
}
}

private void OnGUI()
{
GUI.Label(new Rect(10, 10, 100, 20), "FPS: " + Mathf.Round(count));
}
}

Важно!
- Тестируй с самого начала разработки, а не в конце.
- Проверяй на разных платформах (Android, iOS, PC).
- Используй Build Report для анализа размера билда.

💡 Регулярное тестирование сэкономит недели фиксов перед релизом!

#Unity #GameDev #Оптимизация #Тестирование #Performance
4🎄422😱11
Unity: ключевые инструменты тестирования и оптимизации

Что проверять перед билдом?
Быстрая проверка проекта на основные узкие места: производительность, память, размер сборки.

1. Статистика (Stats) во вкладке Game
Зачем? Мгновенная оценка производительности в реальном времени.
Смотри на:
FPS (кадры в секунду): цель — стабильные 60+.
CPU: общее время рендера и обработки скриптов.
Render Thread: нагрузка на рендер.
Batches (батчи): чем их меньше — тем лучше. Объединяй объекты!
Saved by batching: сколько вызовов отрисовано за 1 батч. Цифра должна быть высокой.
Tris/Verts: количество треугольников и вертексов на кадр.

2. Профайлер (Window > Analysis > Profiler)
Зачем? Найти точную причину падений FPS.
Как использовать?
1. Открой окно.
2. Запусти игру.
3. Смотри графики. Пики — это проблемы.
CPU: ищи тяжёлые скрипты и методы.
Rendering: проблемы с рендером, сложные шейдеры.
Memory: утечки памяти (кнопка «Take Sample» для снимка).
Audio: нагрузка от звуков.

3. Размер билда (File > Build Settings > Build)
Зачем? Узнать итоговый вес игры и что его увеличивает.
Что делать?
• В окне билда нажми «Build» и посмотри итоговый размер.
• Для деталей: в билде открой «Build Report» (включи в настройках Player).
• Смотри: какие ассеты самые тяжёлые (текстуры, аудио, модели).
• Сжимай текстуры, оптимизируй аудио (формат .ogg).

4. Батчинг (Batching)
Зачем? Снизить количество вызовов отрисовки (draw calls).
Как работает?
Static Batching: для статических объектов (отмеченных Static). Unity объединяет их в одну сетку.
Dynamic Batching: Unity автоматически объединяет мелкие объекты с общими материалами.
Важно! Используй общие материалы для одинаковых объектов — это ключ к батчингу.

💡 Вывод: перед билдом всегда проверяй Stats и Профайлер, чтобы найти слабые места. Оптимизируй батчинг и следи за памятью.

#Unity #Unity3D #Optimization #GameDev #Профайлер #Батчинг
🔥64
Unity: способы увлечения игрока в игру

🎯 Что это?
Техники геймдизайна и реализации, которые создают глубокое погружение и удерживают интерес к геймплею с первых секунд.

Зачем?
- Сделать игру запоминающейся и уникальной
- Увеличить время игровой сессии
- Получить положительные отзывы и рекомендации

---

🚀 Ключевые методы
1. Сильная первая минута
Дайте игроку почувствовать силу и действие сразу.
➡️ Пример: взрыв в начале, погоня, быстрое получение крутой способности.
2. «Ещё один ход»-эффект
Создавайте короткие игровые циклы с быстрым вознаграждением.
➡️ Пример: быстрая перезарядка, ежесекундные бонусы, ежеуровневые апгрейды.

3. Визуальный прогресс
📊 Визуализируйте рост через интерфейс.
➡️ Пример: шкала опыта, которая заполняется после каждого боя, или дерево навыков с мгновенными улучшениями.

4. Сочноть геймплея
🎮 Базовые действия должны доставлять радость.
➡️ *Пример: сочные прыжки в платформере, приятная отдача от выстрела.*

---

💻 Пример кода: система мгновенного вознаграждения

public class InstantReward : MonoBehaviour
{
[Header("Настройки визуала")]
public ParticleSystem rewardParticles;
public AudioClip rewardSound;

[Header("Награда")]
public int goldAmount = 10;
public int xpAmount = 15;

public void GiveReward()
{
// Добавляем ресурсы
PlayerInventory.Gold += goldAmount;
PlayerProgress.XP += xpAmount;

// Визуальная обратная связь
Instantiate(rewardParticles, transform.position, Quaternion.identity);
AudioSource.PlayClipAtPoint(rewardSound, Camera.main.transform.position);

// Лёгкая тряска камеры для эффекта
CameraShake.Instance.Shake(0.2f, 0.5f);
}
}

---

🎮 Что запомнить:
- Мгновенная обратная связь (визуал, звук, вибрация)
- Избегайте затяжных туториалов — учите в процессе
- Создавайте «моменты величия» для игрока
- Тестируйте на новых игроках — где они теряют интерес?

---

Действуй! Проанализируй свою игру: где игрок может заскучать? Убери это.

#Unity #GameDesign #Gamedev #ИгровойДизайн #Юнити
🔥711
Unity vs Unreal Engine: что выбрать?

Ключевое отличие
Unity — гибкость и доступность для инди и мобильных проектов.
Unreal — мощь для AAA-графики и больших команд.

Когда выбрать Unity?
• Делаешь мобильные или казуальные игры
• Работаешь один или в небольшой команде
• Хочешь быстро прототипировать и выпускать проекты
• Основной язык — C# (более простой для новичков)
• Платформа: Windows, Mac, Android, iOS, Web — из коробки

Когда выбрать Unreal?
• Создаешь шутер или проект с топовой графикой
• Готов работать с Blueprints (визуальное скриптование) или C++
• Команда крупная, есть технические художники

Графика
Unity: хороша, но требует ручной настройки под высокий уровень.
Unreal: фотореализм «из коробки» благодаря продвинутому рендереру.

Стоимость
Оба движка бесплатны с роялти после определенного порога доходов.

Итог
Нет «лучшего» движка. Есть инструмент, который подходит под твои конкретные задачи.
Начинаешь — стартуй с Unity. Хочешь кинематографичную графику — смотри в сторону Unreal.

#Unity #UnrealEngine #Gamedev #GameDevComparison
221😱111
🔍 Godot vs Unity: что выбрать в 2025?

Ключевые различия:

• Движок:
Unity — промышленный стандарт для 3D и мобильных игр.
Godot — легкий, открытый движок с акцентом на 2D и простоту.

• Язык:
Unity — C# (строгая типизация, большой синтаксис).
Godot — GDScript (Python-подобный, легкий для новичков) + C#.

• Графика:
Unity — мощный рендеринг, URP/HDRP, шейдеры Shader Graph.
Godot — Vulkan/Metal, собственный язык шейдеров, проще настройка.

• Сообщество:
Unity — огромная база tutorials, ассетов, форумов.
Godot — быстрорастущее комьюнити, но материалов меньше.


Когда что выбрать?
Unity: если нужна графика AAA, кроссплатформенность или работа в студии.
→ Godot: для инди-проектов, быстрого прототипирования.

Оба движка достойны. Выбор зависит от задач, опыта и предпочтений! 🎮

#Unity #Godot #GameDev #Gamedevelopment
8🔥432
💰 Заработок на мобильных играх: Яндекс Игры, VK Play

Что ждёт разработчика?
Доход сильно зависит от типа игры, монетизации и маркетинга. Цифры очень примерные!

Яндекс Игры (Yandex Games)
• Платформа с огромной аудиторией СНГ.
• Основная монетизация: реклама (встроенная видео-реклама, баннеры).
• Примерный доход: от 300 до 2000 руб с одной игры в месяц.
• Ключевой фактор: количество ежедневных активных игроков (DAU).
• Плюс: встроенные платежи (IAP) для премиум-игр.

VK Play
• Активно развивающаяся платформа от VK.
• Монетизация: реклама и внутриигровые покупки.
• Примерный доход: от 300 до 1000 руб за месяц.
• Перспективно для аркадных и гипер-казуальных проектов.

Что влияет на доход?
- Качество и уникальность игры
- Постоянные обновления и поддержка
- Умение продвигать свой продукт

💡 Вывод: Не стоит рассчитывать на мгновенную прибыль. Начинай с небольших проектов, изучай аналитику и собирай аудиторию. Это марафон, а не спринт.

#Unity #GameDev #ИндиРазработка #Монетизация
🔥63😁11
Выбор IDE для Unity: инструменты для кода

Что это?
IDE — это твой главный редактор для написания скриптов. Где код становится игрой.

Топ-3 варианта:

Visual Studio (официальный стандарт)
• Плюсы: идеальная интеграция с Unity, автодополнение кода, отладка прямо в редакторе.
• Минусы: может быть тяжеловата для слабых ПК.

Rider — мощный профи
• Плюсы: умный анализ кода, находит ошибки "на лету", встроенные шаблоны для Unity.
• Минусы: платный (но есть бесплатный пробный период).

VS Code — легкий и быстрый
• Плюсы: быстрая работа, тысячи расширений, бесплатный.
• Минусы: требует ручной настройки для работы с Unity.

Как выбрать?
- Новичок? Бери Visual Studio — уже настроена под Unity.
- Профи-кодер? Попробуй Rider — скорость разработки возрастет.
- Любитель кастомизации? VS Code даст полную свободу.

💡 Важно: в Unity (Edit → Preferences → External Tools) выбери свою IDE как внешний редактор.

Пиши код в удобной среде — это ускорит разработку!
#Unity #IDE #GameDev #CSharp
622
Паттерн «Состояние» (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
Чистый код в 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
Адаптивный 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
Изменяемое окно игры в 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
Игра подписчика @ZARKI01

The Unknown Parameter / Неизвестный Параметр

Жанр: Atmospheric survival-horror от первого лица.

Сеттинг: Луна. Вы космонавт, отправленный на поиски пропавшей научной экспедиции.

Что ждёт внутри: Найти можно лишь их трупы... и «это», что за ними охотилось. Забрать образцы и бежать к кораблю под аккомпанемент панических сообщений с луны. Атмосфера одиночества, паники и безысходности в духе классических космических ужасов.

Движок: Unity

Пишу на C#, активно учусь и прототипирую. В планах небольшой, но концентрированный и пугающий опыт.

Следите за развитием! Буду делиться скриншотами, гифками и болью геймдева.

Этот проект я буду делать постепенно, так как ещё пока осваиваю Юнити, и поэтому разработка может длиться от нескольких месяцев.

Тгк - https://t.me/minikraft2010fnaf

#геймдев #индиразработка #хоррор #unity #godotengine #indiegames #indiedev
🔥43😱1
Изменяемое окно игры в 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
🔥94😱21
Unity Animator: Any State — гибкие переходы

Что это?
Состояние, из которого можно перейти в другое состояние *в любой момент*, независимо от текущей анимации.

Зачем?
• Реагировать на критические события мгновенно (смерть, получение урона)
• Прерывать любую анимацию (например, атаку — если игрока отбросило)
• Упрощать логику переходов между несвязанными состояниями

Как настроить?
1. В окне Animator Controller правой кнопкой → Create StateAny State
2. Создай переход из Any State в целевое состояние (например, "Death")
3. Добавь условие перехода (Bool, Trigger и т.д.)
4. В коде активируй параметр при событии:
animator.SetTrigger("Die"); // Прервёт ЛЮБУЮ анимацию

Важные нюансы:
⚠️ Приоритет: Если к Any State привязано несколько переходов, выполнится первый *валидный*.
Order Matters: Измени порядок переходов в списке (верхний = выше приоритет).
Exit Time не работает: Переход мгновенный, тайминг игнорируется.

Пример:
// При получении смертельного урона:
public void TakeDamage(int damage) {
health -= damage;
if (health <= 0) {
animator.SetTrigger("Die"); // Сработает из ЛЮБОГО состояния
}
}

💡 Где использовать:
• Смерть/возрождение
• Стан/оглушение
• Резкая смена действия (телепорт, трансформация)

Используй Any State для критических событий — сделай игру отзывчивой!
#Unity #gamedev #Animator #Unity3D
🔥52😱1
RigidBody в Unity: основа физики

Что это?
Компонент, который делает объект подчинённым физике Unity: гравитация, столкновения, сила.

Зачем?
• Реалистичное движение предметов
• Реакция на удары и падения
• Управление через силы и импульсы
• Настройка массы, трения, упругости

Как использовать?
1. Добавь компонент Rigidbody (или Rigidbody2D для 2D)
2. Включи/отключи Use Gravity при необходимости
3. Управляй движением через код

Пример:

Rigidbody rb;

void Start()
{
rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.forward * 10f, ForceMode.Impulse);
}


Важно!
• ForceMode.Force — плавное ускорение
• ForceMode.Impulse — резкий толчок
• Масса влияет на физику
• Для статичных объектов Rigidbody не нужен

💡 Используй Rigidbody, если хочешь, чтобы объект вёл себя как в реальном мире.

Классный плейлист по физике https://youtube.com/playlist?list=PL8C4SmiVZY0wUFQrUXKQCS3BhRk2MIs8v&si=rkiHtIe4BN_GY0gX

#Unity #Physics #Rigidbody
7🔥411
👁️ Как создать «зрение» ИИ врага в Unity?

Легко!

Давайте рассмотрим процесс поэтапно:

1️⃣ 1. В двухмерном пространстве можно просто отправить один рейкаст в направлении игрока и проверить, происходит ли столкновение.
2️⃣ 2. Однако, если игрок слегка выглядывает из-за угла и его видно, то этот способ не подойдёт. В таком случае, следует отправлять несколько рейкастов веером и проверять, сталкиваются ли они с чем-либо.
3️⃣ 3. Но что делать в трёхмерном пространстве? Не отправлять же миллион рейкастов!

Для этого можно воспользоваться коллайдером, проверить столкновения и отправить пучок рейкастов!

---

"Все гениальное просто, все простое гениально"


👍 Ставьте лайк и подписывайтесь на канал!
#unity #charp #gamedev #ии #unity3d
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. Еще в поля можно писать только константы, не переменные!

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

Пост попросил @Cheeeeeeeb
#Unity #Unity3D #CSharp #Атрибуты #Gamedevelopment
11🔥5
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