Media is too big
VIEW IN TELEGRAM
Привет геймдев-энтузиасты! 🎮 У нас горячий подарок для тех, кто хочет заглянуть под капот крутого проекта: разыгрываем полный исходник Minecraft Sandbox на Unity!
Ссылка
Идеально для:
Подписаться на Akrus Games ❤️
Нажать кнопку "Участвовать"
До 20 августа 2025! Победителя выберем рандомом, результат закрепим тут.
Победитель один!
#розыгрыш #unity3d #gamedev #исходники #minecraft #кликер #AkrusGames #программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥3😁1🎄1 1 1
✅ C# Атрибуты в Unity: мета-инструкции для кода
Что это?
Специальные метки для классов, переменных или методов. Они дают подсказки движку и редактору Unity, как с ними работать.
Зачем?
- Делать переменные видимыми в Инспекторе без ключевого слова
- Задавать диапазоны значений для ползунка
- Добавлять в контекстное меню кнопки для вызова методов
- Скрывать ненужные поля в Инспекторе
Как использовать?
Просто напиши имя атрибута в квадратных скобках
Популярные атрибуты:
Показывает
Создает ползунок для значения.
Добавляет заголовок в Инспектор.
Показывает текст при наведении курсора.
Прячет
Важно!
Атрибуты не меняют логику кода, а только управляют его отображением и поведением в редакторе Unity. Еще в поля можно писать только константы, не переменные!
💡 Используй, чтобы сделать процесс настройки объектов интуитивным и удобным.
Пост попросил @Cheeeeeeeb
#Unity #Unity3D #CSharp #Атрибуты #Gamedevelopment
Что это?
Специальные метки для классов, переменных или методов. Они дают подсказки движку и редактору 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
🔥12❤2 1 1
💧 Шейдеры воды в Unity: основы создания
Что это?
Вертексные и фрагментные шейдеры, которые создают иллюзию воды. Они манипулируют геометрией и цветом объекта, чтобы симулировать волны, прозрачность и отражения.
С чего начать?
1. Создай новый шейдер (Unlit Shader) – он проще для начала.
2. Работай через Shader Graph (визуальный редактор) или пиши код вручную.
Основные компоненты:
• Вертексное смещение: Сдвигает вершины меша по синусоиде для создания волн.
• Нормали: Специальная текстура (Normal Map) для имитации ряби и бликов.
• Прозрачность (Alpha): Настройка параметров альфа-канала и рендера.
• Отражения (Cubemap / Reflection Probe): Добавляют реалистичные блики от окружения.
Простой код волн (в вертексном шейдере):
Как сделать воду визуально appealing?
1. Добавь текстуру нормалей для мелкой ряби.
2. Используй параметр _Time чтобы анимировать смещение текстур.
3. Настрой прозрачность через альфа-канал.
4. Добавь Reflection Probe на сцену для реалистичных отражений.
Важно!
• Для стилизованной графики хватит простого шейдера с синусоидой.
• Для реализма используй более сложные шейдеры с текстурами нормалей, Fresnel эффектом (затухание на глубине) и параллаксом.
• Всегда тестируй при разном освещении!
💡 Применяй для: океанов, луж, магических порталов, любых водных поверхностей.
Пробуй, экспериментируй с параметрами — идеальной формулы нет!
Ссылки https://github.com/Unity-Technologies/BoatAttack
#Unity #Unity3D #Shader #WaterShader #GameDev
Что это?
Вертексные и фрагментные шейдеры, которые создают иллюзию воды. Они манипулируют геометрией и цветом объекта, чтобы симулировать волны, прозрачность и отражения.
С чего начать?
1. Создай новый шейдер (Unlit Shader) – он проще для начала.
2. Работай через Shader Graph (визуальный редактор) или пиши код вручную.
Основные компоненты:
• Вертексное смещение: Сдвигает вершины меша по синусоиде для создания волн.
• Нормали: Специальная текстура (Normal Map) для имитации ряби и бликов.
• Прозрачность (Alpha): Настройка параметров альфа-канала и рендера.
• Отражения (Cubemap / Reflection Probe): Добавляют реалистичные блики от окружения.
Простой код волн (в вертексном шейдере):
v.vertex.y += sin(_Time.y * _WaveSpeed + v.vertex.x * _WaveFrequency) * _WaveHeight;
Как сделать воду визуально appealing?
1. Добавь текстуру нормалей для мелкой ряби.
2. Используй параметр _Time чтобы анимировать смещение текстур.
3. Настрой прозрачность через альфа-канал.
4. Добавь Reflection Probe на сцену для реалистичных отражений.
Важно!
• Для стилизованной графики хватит простого шейдера с синусоидой.
• Для реализма используй более сложные шейдеры с текстурами нормалей, Fresnel эффектом (затухание на глубине) и параллаксом.
• Всегда тестируй при разном освещении!
💡 Применяй для: океанов, луж, магических порталов, любых водных поверхностей.
Пробуй, экспериментируй с параметрами — идеальной формулы нет!
Ссылки https://github.com/Unity-Technologies/BoatAttack
#Unity #Unity3D #Shader #WaterShader #GameDev
❤10
✅ Unity: Мощные инструменты анимации
Blend Trees (Деревья смешивания)
Что это? Инструмент для плавного перехода между несколькими анимациями на основе параметров (например, скорость или направление).
Зачем?
• Создать бесшовный переход от ходьбы к бегу.
• Реализовать движение в 8 направлениях (как в старых RPG).
• Контролировать анимацию поворота на месте.
Как работает?
1. Создаешь Blend Tree внутри State Machine.
2. Добавляешь в него анимации (например, idle, walk, run).
3. Выбираешь параметр для смешивания (чаще всего
4. Настраиваешь threshold (значение параметра, при котором проигрывается конкретная анимация).
Пример:
Animation Layers и Avatar Masks
Слои анимации позволяют проигрывать несколько анимаций одновременно поверх основной.
Маски аватора определяют, какие части скелета затрагивает слой.
Зачем?
• Верхний слой (Upper Body): Анимация стрельбы или жестов, чтобы не прерывать анимацию ног.
• Слой лица (Face Layer): Мимика и речь, независимые от тела.
• Слой инвентаря: Анимация доставания оружия или использования предмета.
Как настроить?
1. В контроллере анимаций добавляешь новый слой.
2. Назначаешь ему Avatar Mask (например, "UpperBody").
3. Выставляешь Weight (сила влияния слоя) и Blending (аддитивный или поверхностный).
Any State
Что это? Особое состояние, которое есть в любом месте State Machine.
Зачем? Позволяет перейти в определенное состояние (например, "Death" или "HitReaction") из любого другого состояния, если условие выполнено.
Важно!
• Для перехода из Any State используй Trigger-параметр.
• Настрой переходы в нужное состояние и выставь условия.
• Это идеально для прерываемых анимаций, смерть и получение урона.
Пример:
Итог:
Blend Trees решают проблему плавного перемещения. Layers и Masks позволяют комбинировать анимации разных частей тела. Any State — это кнопка "прервать всё" для критичных событий.
#Unity #Unity3d #Gamedev #Animation #Indiedev
Blend Trees (Деревья смешивания)
Что это? Инструмент для плавного перехода между несколькими анимациями на основе параметров (например, скорость или направление).
Зачем?
• Создать бесшовный переход от ходьбы к бегу.
• Реализовать движение в 8 направлениях (как в старых RPG).
• Контролировать анимацию поворота на месте.
Как работает?
1. Создаешь Blend Tree внутри State Machine.
2. Добавляешь в него анимации (например, idle, walk, run).
3. Выбираешь параметр для смешивания (чаще всего
Speed типа Float).4. Настраиваешь threshold (значение параметра, при котором проигрывается конкретная анимация).
Пример:
Animator.SetFloat("Speed", 5.5f); // Плавно включит анимацию бегаAnimation Layers и Avatar Masks
Слои анимации позволяют проигрывать несколько анимаций одновременно поверх основной.
Маски аватора определяют, какие части скелета затрагивает слой.
Зачем?
• Верхний слой (Upper Body): Анимация стрельбы или жестов, чтобы не прерывать анимацию ног.
• Слой лица (Face Layer): Мимика и речь, независимые от тела.
• Слой инвентаря: Анимация доставания оружия или использования предмета.
Как настроить?
1. В контроллере анимаций добавляешь новый слой.
2. Назначаешь ему Avatar Mask (например, "UpperBody").
3. Выставляешь Weight (сила влияния слоя) и Blending (аддитивный или поверхностный).
Any State
Что это? Особое состояние, которое есть в любом месте State Machine.
Зачем? Позволяет перейти в определенное состояние (например, "Death" или "HitReaction") из любого другого состояния, если условие выполнено.
Важно!
• Для перехода из Any State используй Trigger-параметр.
• Настрой переходы в нужное состояние и выставь условия.
• Это идеально для прерываемых анимаций, смерть и получение урона.
Пример:
// Прервать любую анимацию и включить смерть
void Die()
{
animator.SetTrigger("Die");
}
Итог:
Blend Trees решают проблему плавного перемещения. Layers и Masks позволяют комбинировать анимации разных частей тела. Any State — это кнопка "прервать всё" для критичных событий.
#Unity #Unity3d #Gamedev #Animation #Indiedev
❤5🔥2 1 1
🔊 3D-звук в Unity: Погружаем игрока в шутер
Зачем?
Чтобы звуки выстрелов, шагов, взрывов и голосов приходили с правильного направления и расстояния. Игрок будет точно знать, откуда стреляют или идёт враг.
Как работает?
Движок рассчитывает громкость и панораму (стерео) для каждого звука исходя из позиции источника и слушателя.
Быстрая настройка:
1. Добавь на объект компонент
2. Включи галочку Spatial Blend и передвинь ползунок до конца вправо (3D). Это главный параметр!
3. Настрой кривую затухания (3D Sound Settings -> Rolloff Mode: Logarithmic или Custom). Укажи, как далеко слышен звук (Max Distance).
Ключевые настройки Audio Source:
- Doppler Level: Эффект сжатия звука при быстром движении (как сирена машины, которая проносится мимо). Для оружия обычно ставится низким (~0.1).
- Spread: Ширина стерео-звука. Для точечных источников (пистолет) — низкое значение, для обширных (взрыв) — высокое.
- Reverb Zones: Добавь компонент
Пример кода (включить/выключить звук шагов):
Важно!
- Слушатель по умолчанию привязан к главной камере. Не перемещай его отдельно.
- Для реалистичности используй Audio Mixer. Создай отдельную группу для звуков игры и применяй к ней эффекты (например, компрессию или эквалайзер).
- Тестируй звук в наушниках.
#Unity #Unity3D #GameDev #GameAudio #gamedevelopment
Зачем?
Чтобы звуки выстрелов, шагов, взрывов и голосов приходили с правильного направления и расстояния. Игрок будет точно знать, откуда стреляют или идёт враг.
Как работает?
Движок рассчитывает громкость и панораму (стерео) для каждого звука исходя из позиции источника и слушателя.
Быстрая настройка:
1. Добавь на объект компонент
Audio Source.2. Включи галочку Spatial Blend и передвинь ползунок до конца вправо (3D). Это главный параметр!
3. Настрой кривую затухания (3D Sound Settings -> Rolloff Mode: Logarithmic или Custom). Укажи, как далеко слышен звук (Max Distance).
Ключевые настройки Audio Source:
- Doppler Level: Эффект сжатия звука при быстром движении (как сирена машины, которая проносится мимо). Для оружия обычно ставится низким (~0.1).
- Spread: Ширина стерео-звука. Для точечных источников (пистолет) — низкое значение, для обширных (взрыв) — высокое.
- Reverb Zones: Добавь компонент
Audio Reverb Zone на локацию (например, тоннель или пещера), чтобы звук реалистично отражался от стен.Пример кода (включить/выключить звук шагов):
public class Footsteps : MonoBehaviour
{
public AudioSource footstepSound;
void Update()
{
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.D))
{
if (!footstepSound.isPlaying)
{
footstepSound.Play();
}
}
else
{
footstepSound.Stop();
}
}
}
Важно!
- Слушатель по умолчанию привязан к главной камере. Не перемещай его отдельно.
- Для реалистичности используй Audio Mixer. Создай отдельную группу для звуков игры и применяй к ней эффекты (например, компрессию или эквалайзер).
- Тестируй звук в наушниках.
#Unity #Unity3D #GameDev #GameAudio #gamedevelopment
🔥5 2 1 1
✅ Unity: что надо знать каждому мидлу
Ми́дл — это тот, кто не просто умеет кодить, а мыслит архитектурно и пишет надежный код.
Чек-лист обязательных знаний:
1. Оптимизация:
* Профилировщик (Profiler) — твой лучший друг. Умей находить узкие места (CPU, GPU, Memory).
* Пулы объектов (Object Pooling) — для пуль, врагов, эффектов. Создавай объекты заранее, а не в реальном времени.
* Кеширование ссылок: Не ищи компоненты (
2. Архитектура и читаемость кода:
* SOLID/DRY: Основы чистого кода. Избегай божественных классов (God Class), дели логику на модули.
* События (Events/Actions): Для слабой связности между компонентами. Объекты реагируют на события, а не дергают методы друг друга напрямую.
* Интерфейсы: Определяют контракт, а не реализацию. Помогают делать код гибким и тестируемым.
3. Продвинутые темы Unity:
* ScriptableObjects: Для данных (настройки врагов, предметов) и создания архитектур типа Event System.
* Assembly Definitions: Ускоряют перекомпиляцию и организуют код в модули.
* Custom Editors (Editor Tooling): Автоматизируй рутину — создавай инструменты для дизайнеров и геймдизайнеров.
Пример: кеширование и событие
Главное: Умей объяснить почему код написан именно так. Твое преимущество — не в знании синтаксиса, а в способности выбрать лучшее решение для задачи.
#Unity #Unity3D #Gamedev #Programming #Code
Ми́дл — это тот, кто не просто умеет кодить, а мыслит архитектурно и пишет надежный код.
Чек-лист обязательных знаний:
1. Оптимизация:
* Профилировщик (Profiler) — твой лучший друг. Умей находить узкие места (CPU, GPU, Memory).
* Пулы объектов (Object Pooling) — для пуль, врагов, эффектов. Создавай объекты заранее, а не в реальном времени.
* Кеширование ссылок: Не ищи компоненты (
GetComponent) каждый кадр. Находи их в Start/Awake и сохраняй в переменную.2. Архитектура и читаемость кода:
* SOLID/DRY: Основы чистого кода. Избегай божественных классов (God Class), дели логику на модули.
* События (Events/Actions): Для слабой связности между компонентами. Объекты реагируют на события, а не дергают методы друг друга напрямую.
* Интерфейсы: Определяют контракт, а не реализацию. Помогают делать код гибким и тестируемым.
3. Продвинутые темы Unity:
* ScriptableObjects: Для данных (настройки врагов, предметов) и создания архитектур типа Event System.
* Assembly Definitions: Ускоряют перекомпиляцию и организуют код в модули.
* Custom Editors (Editor Tooling): Автоматизируй рутину — создавай инструменты для дизайнеров и геймдизайнеров.
Пример: кеширование и событие
public class Enemy : MonoBehaviour
{
private Health _health; // Кешируем компонент
public static Action<Enemy> OnEnemyDied; // Событие
private void Awake()
{
_health = GetComponent<Health>(); // Нашли один раз
}
private void Die()
{
OnEnemyDied?.Invoke(this); // Оповещаем всех подписчиков
gameObject.SetActive(false);
}
}
Главное: Умей объяснить почему код написан именно так. Твое преимущество — не в знании синтаксиса, а в способности выбрать лучшее решение для задачи.
#Unity #Unity3D #Gamedev #Programming #Code
❤11
✅ Шум Перлина в Unity: основа генерации миров
Что это?
Алгоритм для создания плавных, естественных случайных значений. Не просто хаос, а структурированный «шум», похожий на облака, рельеф или текстуру камня.
Зачем?
• Генерация ландшафта (горы, холмы)
• Создание текстур (мрамор, огонь, облака)
• Procedural-генерация миров (карты высот)
• Симуляция природных явлений (дым, туман)
Как работает?
В отличие от случайных чисел, шум Перлина создаёт связанные, непрерывные значения. Он создаёт плавные перепады высот вместо острых пиков.
Как использовать в Unity?
1. Получи значение шума в точке (x, y)
2. Используй это значение для высоты (Y) или внешнего вида объекта
Простой пример для меша:
(Переменные scale и heightMultiplier настраивай в инспекторе)
Важно!
• Используй Mathf.PerlinNoise — встроенная функция Unity.
• Координаты должны быть дробными, а не целыми (например, 0.1, 0.15, 0.2).
• Для больших миров используй смещение (offset), чтобы избежать повторения.
• Комбинируй несколько слоёв шума (octaves) для сложного рельефа.
💡 Применяй для: процедурных планет, пещер, растительности и любых органических форм.
Создавай бесконечные уникальные миры! 🌍
#Unity #Unity3D #ProceduralGeneration #PerlinNoise #Gamedev
Что это?
Алгоритм для создания плавных, естественных случайных значений. Не просто хаос, а структурированный «шум», похожий на облака, рельеф или текстуру камня.
Зачем?
• Генерация ландшафта (горы, холмы)
• Создание текстур (мрамор, огонь, облака)
• Procedural-генерация миров (карты высот)
• Симуляция природных явлений (дым, туман)
Как работает?
В отличие от случайных чисел, шум Перлина создаёт связанные, непрерывные значения. Он создаёт плавные перепады высот вместо острых пиков.
Как использовать в Unity?
1. Получи значение шума в точке (x, y)
2. Используй это значение для высоты (Y) или внешнего вида объекта
Простой пример для меша:
void GenerateTerrain() {
MeshFilter mf = GetComponent<MeshFilter>();
Vector3[] vertices = mf.mesh.vertices;
for (int i = 0; i < vertices.Length; i++) {
// Получаем значение шума для точки
float sample = Mathf.PerlinNoise(
vertices[i].x * scale,
vertices[i].z * scale
);
// Применяем к высоте вершины
vertices[i].y = sample * heightMultiplier;
}
mf.mesh.vertices = vertices;
mf.mesh.RecalculateNormals();
}(Переменные scale и heightMultiplier настраивай в инспекторе)
Важно!
• Используй Mathf.PerlinNoise — встроенная функция Unity.
• Координаты должны быть дробными, а не целыми (например, 0.1, 0.15, 0.2).
• Для больших миров используй смещение (offset), чтобы избежать повторения.
• Комбинируй несколько слоёв шума (octaves) для сложного рельефа.
💡 Применяй для: процедурных планет, пещер, растительности и любых органических форм.
Создавай бесконечные уникальные миры! 🌍
#Unity #Unity3D #ProceduralGeneration #PerlinNoise #Gamedev
❤5 2
✅ Unity: какие мини-проекты должен попробовать сделать каждый
Зачем?
Чтобы на практике закрепить основы и понять полный цикл разработки. От идеи до работающего билда.
Список для старта:
1. Roll-a-Ball
Простой 3D шар, которым ты управляешь. Собирай кубики, чтобы набрать очки.
Чему научишься: движение объекта, коллизии, сбор предметов, простой UI.
2. 2D Платформер
Персонаж, который прыгает по платформам, избегает врагов и собирает монеты.
Чему научишься: 2D физика, анимации, состояния персонажа, простой ИИ врагов.
3. Арканоид (Breakout)
Платформа, которая отбивает мяч, чтобы разбить все блоки на уровне.
Чему научишься: работа с 2D коллизиями, префабы, создание уровней.
4. Бесконечный раннер
Персонаж автоматически бежит вперед, игрок уворачивается от препятствий.
Чему научишься: генерация препятствий, увеличение сложности, работа с бесконечным миром.
5. Простой тайкун (Idle Game)
Кликер, где ты зарабатываешь монеты, улучшаешь свой доход и покупаешь новые здания.
Чему научишься: логика улучшений, сохранение прогресса (PlayerPrefs), работа с UI.
Почему это работает?
Каждый проект фокусируется на ключевых механиках. Сделав их, ты не просто изучишь код, а поймешь, как все части игры соединяются в одно целое.
Начинай с самого простого и постепенно усложняй! 🚀
#Unity #Unity3D #GameDev #ИндиРазработка #Gamedevelopment
Зачем?
Чтобы на практике закрепить основы и понять полный цикл разработки. От идеи до работающего билда.
Список для старта:
1. Roll-a-Ball
Простой 3D шар, которым ты управляешь. Собирай кубики, чтобы набрать очки.
Чему научишься: движение объекта, коллизии, сбор предметов, простой UI.
2. 2D Платформер
Персонаж, который прыгает по платформам, избегает врагов и собирает монеты.
Чему научишься: 2D физика, анимации, состояния персонажа, простой ИИ врагов.
3. Арканоид (Breakout)
Платформа, которая отбивает мяч, чтобы разбить все блоки на уровне.
Чему научишься: работа с 2D коллизиями, префабы, создание уровней.
4. Бесконечный раннер
Персонаж автоматически бежит вперед, игрок уворачивается от препятствий.
Чему научишься: генерация препятствий, увеличение сложности, работа с бесконечным миром.
5. Простой тайкун (Idle Game)
Кликер, где ты зарабатываешь монеты, улучшаешь свой доход и покупаешь новые здания.
Чему научишься: логика улучшений, сохранение прогресса (PlayerPrefs), работа с UI.
Почему это работает?
Каждый проект фокусируется на ключевых механиках. Сделав их, ты не просто изучишь код, а поймешь, как все части игры соединяются в одно целое.
Начинай с самого простого и постепенно усложняй! 🚀
#Unity #Unity3D #GameDev #ИндиРазработка #Gamedevelopment
❤7🔥3🎄1
✅ Unity: Адаптивный Canvas под любые разрешения
В чем проблема?
UI-элементы уплывают за экран или сбиваются в кучу при изменении размера окна или на другом устройстве.
Решение:
Правильная настройка Canvas и компонента Canvas Scaler.
Как настроить?
1. Canvas: В компоненте
2. Canvas Scaler: Это главный компонент для адаптивности.
* UI Scale Mode: Выставь
* Reference Resolution: Поставь разрешение, под которым ты разрабатываешь интерфейс (например, 1920x1080).
* Screen Match Mode: Выставь
Почему «Expand»?
Этот режим гарантирует, что твой UI будет равномерно масштабироваться и всегда помещаться на экране, не обрезаясь.
Как anchoring?
Привязывай элементы к краям экрана. Выдели UI-объект и в окне Rect Tool (удерживая Alt) выбери нужный якорь. Например, для панели здоровья привяжи к левому верхнему углу.
Итог:
Canvas Scaler + правильные якоря = идеальный интерфейс на любом экране.
#Unity #Unity3D #UI #Canvas #Gamedev
В чем проблема?
UI-элементы уплывают за экран или сбиваются в кучу при изменении размера окна или на другом устройстве.
Решение:
Правильная настройка Canvas и компонента Canvas Scaler.
Как настроить?
1. Canvas: В компоненте
Canvas установи Render Mode в Screen Space - Overlay.2. Canvas Scaler: Это главный компонент для адаптивности.
* UI Scale Mode: Выставь
Scale With Screen Size.* Reference Resolution: Поставь разрешение, под которым ты разрабатываешь интерфейс (например, 1920x1080).
* Screen Match Mode: Выставь
Expand. Это ключевая настройка!Почему «Expand»?
Этот режим гарантирует, что твой UI будет равномерно масштабироваться и всегда помещаться на экране, не обрезаясь.
Как anchoring?
Привязывай элементы к краям экрана. Выдели UI-объект и в окне Rect Tool (удерживая Alt) выбери нужный якорь. Например, для панели здоровья привяжи к левому верхнему углу.
Итог:
Canvas Scaler + правильные якоря = идеальный интерфейс на любом экране.
#Unity #Unity3D #UI #Canvas #Gamedev
❤8 4🔥3🎄3
✅ Light Probes в Unity: освещение динамических объектов
Что это?
Система, которая «запоминает» освещение в разных точках сцены. Это навигационные точки для света.
Зачем?
Чтобы движущиеся объекты (персонажи, машины) были реалистично освещены.
• Без проб: динамические объекты освещаются только прямым светом или Lightmaps, выглядят плохо и не вписываются в сцену.
• С пробами: объекты подхватывают отраженный (baked) свет от окружения, выглядят естественно.
Как работает?
1. Расставляешь пробы в сцене (GameObject > Light > Light Probe Group).
2. Запекаешь освещение (Bake Lighting).
3. Unity интерполирует (смешивает) свет между пробами для объекта в реальном времени.
Как настроить?
1. На движущемся объекте должен быть компонент
2. В его материалах убедись, что используется Standard или подобный шейдер.
3. В настройках
Важно!
• Ставь пробы там, где проходит игрок или двигаются объекты.
• Избегай резких переходов света. Делай сетку проб плотнее в таких местах.
• Не забывай запекать освещение после расстановки проб.
💡 Применяй для: персонажей, врагов, машин, всего, что движется по сцене со baked-освещением.
#Unity #Unity3D #GameDev #Lighting #LightProbes
Что это?
Система, которая «запоминает» освещение в разных точках сцены. Это навигационные точки для света.
Зачем?
Чтобы движущиеся объекты (персонажи, машины) были реалистично освещены.
• Без проб: динамические объекты освещаются только прямым светом или Lightmaps, выглядят плохо и не вписываются в сцену.
• С пробами: объекты подхватывают отраженный (baked) свет от окружения, выглядят естественно.
Как работает?
1. Расставляешь пробы в сцене (GameObject > Light > Light Probe Group).
2. Запекаешь освещение (Bake Lighting).
3. Unity интерполирует (смешивает) свет между пробами для объекта в реальном времени.
Как настроить?
1. На движущемся объекте должен быть компонент
Renderer.2. В его материалах убедись, что используется Standard или подобный шейдер.
3. В настройках
Renderer в разделе Lighting должно быть включено Use Light Probes.Важно!
• Ставь пробы там, где проходит игрок или двигаются объекты.
• Избегай резких переходов света. Делай сетку проб плотнее в таких местах.
• Не забывай запекать освещение после расстановки проб.
💡 Применяй для: персонажей, врагов, машин, всего, что движется по сцене со baked-освещением.
#Unity #Unity3D #GameDev #Lighting #LightProbes
🔥7❤2
✅ Unity: мониторинг через график в инспекторе
Зачем?
Вместо того чтобы следить за цифрами в консоли, наблюдай за изменением значений в реальном времени на наглядном графике. Идеально для отладки ИИ, баланса здоровья или скорости.
Как это работает?
Используем атрибут
Как сделать?
1. Объяви публичное поле с типом
2. В коде добавляй в него ключевые точки с данными.
Простой пример: отслеживание дистанции до врага.
1. Добавь скрипт на объект.
2. В инспекторе появится график.
3. Запусти игру и смотри, как значение меняется в реальном времени!
Важно!
• Не забывай очищать график перед новым запуском игры (правый клик по графику -> «Clear All»).
• Используй для отладки сложных систем: HP, скорость, параметры анимаций.
Удобно и наглядно для тонкой настройки геймплея! 📊
#Unity #Unity3D #Gamedev #РазработкаИгр #Отладка
Зачем?
Вместо того чтобы следить за цифрами в консоли, наблюдай за изменением значений в реальном времени на наглядном графике. Идеально для отладки ИИ, баланса здоровья или скорости.
Как это работает?
Используем атрибут
[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 #РазработкаИгр #Отладка
🔥7❤3 1
✅ 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 #Профайлер #Батчинг
Что проверять перед билдом?
Быстрая проверка проекта на основные узкие места: производительность, память, размер сборки.
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 #Профайлер #Батчинг
🔥6❤4
✅ Изменяемое окно игры в 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
• Игрок может менять размер перетаскиванием краёв окна
• В коде можно отслеживать изменение размера:
Что проверить:
- Интерфейс (UI) должен адаптироваться под разные разрешения
- Камера может требовать перенастройки при изменении пропорций
- Для Windows убедись, что в Target Platform выбрана версия с DX11/OpenGL
💡 Используй для: удобства тестирования, игр с оконным режимом, инструментов разработки.
Советую прочитать предыдущий пост про настройку Canvas
#Unity #GameDev #Сборка #Unity2D #Unity3D
Как настроить?
В сборках под ПК (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
🛠 Обзор программ для 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
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
❤6 3🎄2 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
• Игрок может менять размер перетаскиванием краёв окна
• В коде можно отслеживать изменение размера:
Что проверить:
- Интерфейс (UI) должен адаптироваться под разные разрешения
- Камера может требовать перенастройки при изменении пропорций
- Для Windows убедись, что в Target Platform выбрана версия с DX11/OpenGL
💡 Используй для: удобства тестирования, игр с оконным режимом, инструментов разработки.
Советую прочитать пост про настройку Canvas
#Unity #GameDev #Сборка #Unity2D #Unity3D
Как настроить?
В сборках под ПК (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
🔥9❤4😱2 1
✅ Unity Animator: Any State — гибкие переходы
Что это?
Состояние, из которого можно перейти в другое состояние *в любой момент*, независимо от текущей анимации.
Зачем?
• Реагировать на критические события мгновенно (смерть, получение урона)
• Прерывать любую анимацию (например, атаку — если игрока отбросило)
• Упрощать логику переходов между несвязанными состояниями
Как настроить?
1. В окне Animator Controller правой кнопкой → Create State → Any State
2. Создай переход из Any State в целевое состояние (например, "Death")
3. Добавь условие перехода (Bool, Trigger и т.д.)
4. В коде активируй параметр при событии:
Важные нюансы:
• ⚠️ Приоритет: Если к
• Order Matters: Измени порядок переходов в списке (верхний = выше приоритет).
• Exit Time не работает: Переход мгновенный, тайминг игнорируется.
Пример:
💡 Где использовать:
• Смерть/возрождение
• Стан/оглушение
• Резкая смена действия (телепорт, трансформация)
Используй Any State для критических событий — сделай игру отзывчивой!
#Unity #gamedev #Animator #Unity3D
Что это?
Состояние, из которого можно перейти в другое состояние *в любой момент*, независимо от текущей анимации.
Зачем?
• Реагировать на критические события мгновенно (смерть, получение урона)
• Прерывать любую анимацию (например, атаку — если игрока отбросило)
• Упрощать логику переходов между несвязанными состояниями
Как настроить?
1. В окне Animator Controller правой кнопкой → Create State → Any 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
🔥5❤2😱1
⚡️ 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?
Легко! ✨
Давайте рассмотрим процесс поэтапно:
1️⃣ 1. В двухмерном пространстве можно просто отправить один рейкаст в направлении игрока и проверить, происходит ли столкновение.
2️⃣ 2. Однако, если игрок слегка выглядывает из-за угла и его видно, то этот способ не подойдёт. В таком случае, следует отправлять несколько рейкастов веером и проверять, сталкиваются ли они с чем-либо.
3️⃣ 3. Но что делать в трёхмерном пространстве? Не отправлять же миллион рейкастов!
Для этого можно воспользоваться коллайдером, проверить столкновения и отправить пучок рейкастов! ⚡
---
👍 Ставьте лайк и подписывайтесь на канал!
#unity #charp #gamedev #ии #unity3d
Легко! ✨
Давайте рассмотрим процесс поэтапно:
1️⃣ 1. В двухмерном пространстве можно просто отправить один рейкаст в направлении игрока и проверить, происходит ли столкновение.
2️⃣ 2. Однако, если игрок слегка выглядывает из-за угла и его видно, то этот способ не подойдёт. В таком случае, следует отправлять несколько рейкастов веером и проверять, сталкиваются ли они с чем-либо.
3️⃣ 3. Но что делать в трёхмерном пространстве? Не отправлять же миллион рейкастов!
Для этого можно воспользоваться коллайдером, проверить столкновения и отправить пучок рейкастов! ⚡
---
"Все гениальное просто, все простое гениально"
👍 Ставьте лайк и подписывайтесь на канал!
#unity #charp #gamedev #ии #unity3d
❤5🔥4 1
✅ C# Атрибуты в Unity: мета-инструкции для кода
Что это?
Специальные метки для классов, переменных или методов. Они дают подсказки движку и редактору Unity, как с ними работать.
Зачем?
- Делать переменные видимыми в Инспекторе без ключевого слова public
- Задавать диапазоны значений для ползунка
- Добавлять в контекстное меню кнопки для вызова методов
- Скрывать ненужные поля в Инспекторе
Как использовать?
Просто напиши имя атрибута в квадратных скобках [] перед элементом.
Популярные атрибуты:
[SerializeField]
Показывает private поле в Инспекторе.
[Range(min, max)]
Создает ползунок для значения.
[Header("Название")]
Добавляет заголовок в Инспектор.
[Tooltip("Подсказка")]
Показывает текст при наведении курсора.
[HideInInspector]
Прячет public поле из Инспектора.
Важно!
Атрибуты не меняют логику кода, а только управляют его отображением и поведением в редакторе Unity. Еще в поля можно писать только константы, не переменные!
💡 Используй, чтобы сделать процесс настройки объектов интуитивным и удобным.
Пост попросил @Cheeeeeeeb
#Unity #Unity3D #CSharp #Атрибуты #Gamedevelopment
Что это?
Специальные метки для классов, переменных или методов. Они дают подсказки движку и редактору 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 поле в Инспекторе.
[Range(min, max)]
Создает ползунок для значения.
[Header("Название")]
Добавляет заголовок в Инспектор.
[Tooltip("Подсказка")]
Показывает текст при наведении курсора.
[HideInInspector]
Прячет public поле из Инспектора.
Важно!
Атрибуты не меняют логику кода, а только управляют его отображением и поведением в редакторе Unity. НО есть атрибут Obsolete который не относится к юнити и не влияет на отображение в редакторе. Еще в поля можно писать только константы, не переменные!
💡 Используй, чтобы сделать процесс настройки объектов интуитивным и удобным.
#Unity #Unity3D #CSharp #Атрибуты #Gamedevelopment
Что это?
Специальные метки для классов, переменных или методов. Они дают подсказки движку и редактору 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