✅ Unity: Sprite Mode Multiple - Разрезаем спрайт-листы!
Зачем это?
Когда импортируешь изображение со множеством спрайтов (анимации, тайлы) — выбери
Как разрезать?
1. Выбери текстуру в Project окне.
2. В Inspector найди
3. Важно! Поставь
4. Нажми
В Sprite Editor:
• Авто-резка: Нажми
• Ручная резка: Выдели спрайты мышью, поправь границы.
• Подтверди: Нажми
Готово! Теперь в Project окне разверни текстуру — увидишь все отдельные спрайты.
Зачем так делать?
• Создавать анимации из кадров.
• Использовать тайлы для построения уровней (Tilemap).
• Работать с отдельными элементами UI или объектов.
💡 Совет: Всегда проверяй
#Unity #Unity2D #GameDev #Sprites #Gamedevelopment
Зачем это?
Когда импортируешь изображение со множеством спрайтов (анимации, тайлы) — выбери
Multiple! Иначе весь лист считается одним большим спрайтом. Как разрезать?
1. Выбери текстуру в Project окне.
2. В Inspector найди
Texture Type -> Sprite (2D and UI). 3. Важно! Поставь
Sprite Mode в Multiple. 4. Нажми
Sprite Editor (откроется новое окно). В Sprite Editor:
• Авто-резка: Нажми
Slice -> Выбери тип (Grid по ячейкам, Automatic по прозрачности). • Ручная резка: Выдели спрайты мышью, поправь границы.
• Подтверди: Нажми
Apply (в правом верхнем углу). Готово! Теперь в Project окне разверни текстуру — увидишь все отдельные спрайты.
Зачем так делать?
• Создавать анимации из кадров.
• Использовать тайлы для построения уровней (Tilemap).
• Работать с отдельными элементами UI или объектов.
💡 Совет: Всегда проверяй
Sprite Mode при импорте спрайт-листов! Одна настройка — и работа с анимациями/тайлами становится в разы проще. #Unity #Unity2D #GameDev #Sprites #Gamedevelopment
🔥6
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
✅ Unity ECS & Jobs System: революция производительности
Что это?
Архитектура, где данные хранятся отдельно от логики (Data-Oriented Design). Позволяет обрабатывать десятки тысяч объектов без падения FPS.
Зачем?
- Массовые симуляции (орды врагов, частицы, песочницы)
- Полное использование многоядерных процессоров
- Предсказуемое управление памятью (Zero GC Allocations)
Базовые понятия:
- Entity — не объект, а легковесный ID.
- ComponentData — чистые данные (struct, без методов).
- System — логика, которая работает с массивами компонентов.
Пример (спавн кубов):
Важно!
- Требуется пакет
- Это полный разрыв с
- Идеально для VR/AR с strict performance требованиями
💡 Начинай с гибридного подхода:
#Unity #ECS #Performance #Optimization #JobSystem
Что это?
Архитектура, где данные хранятся отдельно от логики (Data-Oriented Design). Позволяет обрабатывать десятки тысяч объектов без падения FPS.
Зачем?
- Массовые симуляции (орды врагов, частицы, песочницы)
- Полное использование многоядерных процессоров
- Предсказуемое управление памятью (Zero GC Allocations)
Базовые понятия:
- Entity — не объект, а легковесный ID.
- ComponentData — чистые данные (struct, без методов).
- System — логика, которая работает с массивами компонентов.
Пример (спавн кубов):
// Компонент (данные)
public struct RotationSpeed : IComponentData
{
public float RadiansPerSecond;
}
// Система (логика)
public class RotationSystem : SystemBase
{
protected override void OnUpdate()
{
float deltaTime = Time.DeltaTime;
Entities
.ForEach((ref Rotatable rotatable, in RotationSpeed speed) =>
{
rotatable.Value = math.mul(
math.normalize(rotatable.Value),
quaternion.AxisAngle(math.up(), speed.RadiansPerSecond * deltaTime)
);
}).ScheduleParallel();
}
}
Важно!
- Требуется пакет
Entities и Unity.Burst- Это полный разрыв с
MonoBehaviour и ООП- Идеально для VR/AR с strict performance требованиями
💡 Начинай с гибридного подхода:
MonoBehaviour -> преобразование в Entity через ConvertToEntity.#Unity #ECS #Performance #Optimization #JobSystem
🔥3
Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
✅ Shader Graph: создание материалов без кода
Что это?
Визуальный редактор для написания шейдеров. Собираешь нодами, как в редакторе материалов.
Зачем?
- Быстрая итерация: видишь результат в реальном времени
- Не нужно знать HLSL/GLSL на продвинутом уровне
- Создание сложных эффектов (свечение, прокрутка текстур)
Как создать эффект прокрутки текстуры:
1. Создай
2. Создай
3. Создай
4. Соедини:
5. Подключи
Сильные стороны:
- Vertex Displacement (трава, волны на воде)
- Custom Lighting Models (стилизованная графика)
- Procedural Patterns (генерируемые узоры)
Важно!
- Для мобильных платформ используй низкую точность (
- Для UI шейдеров ставь
💡 Комбинируй с
#Unity #ShaderGraph #Shaders #Graphics #URP
Что это?
Визуальный редактор для написания шейдеров. Собираешь нодами, как в редакторе материалов.
Зачем?
- Быстрая итерация: видишь результат в реальном времени
- Не нужно знать HLSL/GLSL на продвинутом уровне
- Создание сложных эффектов (свечение, прокрутка текстур)
Как создать эффект прокрутки текстуры:
1. Создай
Texture2D ноду, подключи текстуру.2. Создай
Time ноду для анимированного параметра.3. Создай
Tiling And Offset ноду.4. Соедини:
Time -> Multiply (на скорость) -> Fraction -> в Offset порт Tiling And Offset.5. Подключи
Tiling And Offset к Base Color материала.Сильные стороны:
- Vertex Displacement (трава, волны на воде)
- Custom Lighting Models (стилизованная графика)
- Procedural Patterns (генерируемые узоры)
Важно!
- Для мобильных платформ используй низкую точность (
Half)- Для UI шейдеров ставь
Blend Mode на Alpha💡 Комбинируй с
Scriptable Render Pipeline (URP/HDRP) для полной мощности.#Unity #ShaderGraph #Shaders #Graphics #URP
🔥8
✅ Custom Editor Tools: ускорь workflow в редакторе
Что это?
Создание собственных окон и кнопок в редакторе Unity для автоматизации рутины.
Зачем?
- Массовое переименование префабов
- Автоматическое размещение объектов по правилу
- Валидация данных на сцене
- Создание уникального инструментария под ваш проект
Пример: кнопка для спавна префабов в сцене:
Пример 2: Утилита для переименования:
Важно!
- Весь код инструментов оборачивай в
- Не используй в редакторе
💡 Создавай инструменты для дизайнеров уровней и художников — они скажут спасибо!
#Unity #Editor #Tools #Productivity #Workflow
Что это?
Создание собственных окон и кнопок в редакторе Unity для автоматизации рутины.
Зачем?
- Массовое переименование префабов
- Автоматическое размещение объектов по правилу
- Валидация данных на сцене
- Создание уникального инструментария под ваш проект
Пример: кнопка для спавна префабов в сцене:
[CustomEditor(typeof(LevelManager))]
public class LevelManagerEditor : Editor
{
public override void OnInspectorGUI()
{
DrawDefaultInspector(); // Рисует стандартные поля
LevelManager myScript = (LevelManager)target;
if(GUILayout.Button("Spawn Enemy Wave")) // Кнопка в инспекторе
{
myScript.SpawnEnemyWave(); // Вызывает метод из скрипта
}
}
}
Пример 2: Утилита для переименования:
public class RenamerTool : EditorWindow
{
private string baseName = "Enemy_";
[MenuItem("Tools/My Renamer")] // Добавляет пункт в меню
public static void ShowWindow() => GetWindow<RenamerTool>("Renamer");
void OnGUI()
{
baseName = EditorGUILayout.TextField("Base Name", baseName);
if (GUILayout.Button("Rename Selection"))
{
foreach(GameObject obj in Selection.gameObjects)
{
obj.name = baseName + obj.GetInstanceID();
}
}
}
}
Важно!
- Весь код инструментов оборачивай в
#if UNITY_EDITOR ... #endif- Не используй в редакторе
GameObject.Find, используй Selection.gameObjects или FindObjectsOfType💡 Создавай инструменты для дизайнеров уровней и художников — они скажут спасибо!
#Unity #Editor #Tools #Productivity #Workflow
🔥8 1 1
💻⚡️ Прокачивайте скорость печати и почувствуйте себя настоящим хакером!
Нашел браузерную игру, где надо вводить реальные команды быстро и без ошибок, чтобы взломать систему до срабатывания тревоги.
🤔 Каждая ошибка — риск быть замеченным и провалить миссию.
👉 Начинаем прокачку скорости печати здесь
Нашел браузерную игру, где надо вводить реальные команды быстро и без ошибок, чтобы взломать систему до срабатывания тревоги.
🤔 Каждая ошибка — риск быть замеченным и провалить миссию.
👉 Начинаем прокачку скорости печати здесь
🔥6❤1😁1
✅ Unity ECS на практике: Пишем первую систему
Следующий шаг
Разберем, как преобразовать обычные GameObject в Entity и работать с ними.
1. Гибридный подход (MonoBehaviour -> Entity)
- Добавь на GameObject компонент ConvertToEntity
- Он автоматически преобразует объект и его дочерние элементы при старте
2. Authoring (Создание данных в редакторе)
Пишем MonoBehaviour-обертку для визуальной настройки.
3. Система с зависимостями
Системы могут требовать наличие других компонентов.
4. Важные нюансы:
- RefRO - Read Only доступ (только чтение)
- RefRW - Read Write доступ (чтение и запись)
- Используй SystemAPI.Query для итерации по сущностям с нужными компонентами
- Все изменения автоматически параллелятся Burst компил💡 Совет: Начинай с малого — перенеси в ECS самые тяжелые части (частицы, ИИ). Не нужно переписывать всё сразу.
#Unity #ECS #DOTS #Performance #Burst
Следующий шаг
Разберем, как преобразовать обычные GameObject в Entity и работать с ними.
1. Гибридный подход (MonoBehaviour -> Entity)
- Добавь на GameObject компонент ConvertToEntity
- Он автоматически преобразует объект и его дочерние элементы при старте
2. Authoring (Создание данных в редакторе)
Пишем MonoBehaviour-обертку для визуальной настройки.
public class RotationSpeedAuthoring : MonoBehaviour
{
public float DegreesPerSecond = 360f;
}
// "Повар" преобразует Authoring в ComponentData
public class RotationSpeedAuthoringBaker : Baker<RotationSpeedAuthoring>
{
public override void Bake(RotationSpeedAuthoring authoring)
{
var entity = GetEntity(TransformUsageFlags.Dynamic);
AddComponent(entity, new RotationSpeed
{
RadiansPerSecond = math.radians(authoring.DegreesPerSecond)
});
}
}
3. Система с зависимостями
Системы могут требовать наличие других компонентов.
// Система, которая работает только с объектами, у которых есть RotationSpeed и Rotation
[UpdateInGroup(typeof(SimulationSystemGroup))]
public partial struct MyRotationSystem : ISystem
{
public void OnUpdate(ref SystemState state)
{
foreach (var (transform, speed) in
SystemAPI.Query<RefRW<LocalTransform>, RefRO<RotationSpeed>>())
{
transform.ValueRW = transform.ValueRO.RotateY(
speed.ValueRO.RadiansPerSecond * SystemAPI.Time.DeltaTime
);
}
}
}
4. Важные нюансы:
- RefRO - Read Only доступ (только чтение)
- RefRW - Read Write доступ (чтение и запись)
- Используй SystemAPI.Query для итерации по сущностям с нужными компонентами
- Все изменения автоматически параллелятся Burst компил💡 Совет: Начинай с малого — перенеси в ECS самые тяжелые части (частицы, ИИ). Не нужно переписывать всё сразу.
#Unity #ECS #DOTS #Performance #Burst
🔥5 1
✅ C# Events в Unity: Избавься от спагетти-кода
Что это?
Паттерн, позволяющий объектам общаться друг с другом без прямых ссылок.
Зачем?
- Сильно снизить связность кода
- Делать код modular и переиспользуемым
- Легко добавлять новую реакцию на событие (звук, анимацию, UI)
- Избегать постоянных проверок в Update (
Как создать?
1. Объяви делегат и событие
2. Подпиши метод на событие
3. Вызови событие, когда что-то произошло
Пример (Смерть игрока):
Как использовать?
Важно!
- Всегда отписывайся от событий в
-
#Unity #CSharp #Events #Delegates #Optimization
Что это?
Паттерн, позволяющий объектам общаться друг с другом без прямых ссылок.
Зачем?
- Сильно снизить связность кода
- Делать код modular и переиспользуемым
- Легко добавлять новую реакцию на событие (звук, анимацию, UI)
- Избегать постоянных проверок в Update (
if (isDead) {...})Как создать?
1. Объяви делегат и событие
2. Подпиши метод на событие
3. Вызови событие, когда что-то произошло
Пример (Смерть игрока):
public class PlayerHealth : MonoBehaviour
{
// 1. Объявляем событие
public static event Action OnPlayerDeath;
public void TakeDamage()
{
if (health <= 0)
{
// 3. Вызываем событие
OnPlayerDeath?.Invoke();
}
}
}
Как использовать?
public class GameManager : MonoBehaviour
{
void OnEnable()
{
// 2. Подписываемся на событие
PlayerHealth.OnPlayerDeath += HandlePlayerDeath;
}
void OnDisable()
{
// Важно: отписываемся при выключении
PlayerHealth.OnPlayerDeath -= HandlePlayerDeath;
}
void HandlePlayerDeath()
{
// Реакция на смерть игрока
Debug.Log("Game Over!");
Time.timeScale = 0f;
}
}
Важно!
- Всегда отписывайся от событий в
OnDisable или OnDestroy, чтобы не было утечек памяти.-
?.Invoke() проверяет, есть ли подписчики (null-check).#Unity #CSharp #Events #Delegates #Optimization
🔥7 3 2🎄1 1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10😁7 2
✅ UnityEvents vs Action: когда что использовать?
В чём разница?
Оба подхода реализуют паттерн «наблюдатель», но с разным уровнем гибкости и сложности.
UnityEvent
Идеально для дизайнеров и работы в инспекторе.
• Плюсы:
- Виден в инспекторе. Дизайнер уровней может сам настраивать связи между объектами.
- Сериализуется (сохраняется между запусками редактора).
- Простота использования.
• Минусы:
- Меньшая производительность по сравнению с Action.
- Не такая гибкая подписка из кода.
Как использовать UnityEvent:
1. Объяви публичное поле в классе:
2. В инспекторе на объекте с этим скриптом появится сворачиваемый список вызовов (Calls).
3. Перетаскивай в него любой объект и выбирай его метод для вызова.
Action
Мощный инструмент для программистов. Работает только в коде.
• Плюсы:
- Высокая производительность.
- Чистый и лаконичный синтаксис подписки.
- Полный контроль над подписками и отписками.
• Минусы:
- Не виден в инспекторе. Только для программистов.
Как использовать Action:
1. Объяви событие в классе:
2. Для вызова события в нужном месте:
3. В другом классе подпишись на событие:
Не забудь отписаться при уничтожении объекта:
Итог:
➡️ Используй UnityEvent для настройки взаимодействий между объектами в инспекторе (двери, кнопки, переключатели).
➡️ Используй Action для быстрых и частых событий внутри кода (система достижений, UI, логика игры).
Выбирай инструмент под задачу! 💪
Пост предложил @Fylht009
#Unity #CSharp #GameDev #Events #Gamedevelopment
В чём разница?
Оба подхода реализуют паттерн «наблюдатель», но с разным уровнем гибкости и сложности.
UnityEvent
Идеально для дизайнеров и работы в инспекторе.
• Плюсы:
- Виден в инспекторе. Дизайнер уровней может сам настраивать связи между объектами.
- Сериализуется (сохраняется между запусками редактора).
- Простота использования.
• Минусы:
- Меньшая производительность по сравнению с Action.
- Не такая гибкая подписка из кода.
Как использовать UnityEvent:
1. Объяви публичное поле в классе:
public UnityEvent OnSomethingHappened; 2. В инспекторе на объекте с этим скриптом появится сворачиваемый список вызовов (Calls).
3. Перетаскивай в него любой объект и выбирай его метод для вызова.
Action
Мощный инструмент для программистов. Работает только в коде.
• Плюсы:
- Высокая производительность.
- Чистый и лаконичный синтаксис подписки.
- Полный контроль над подписками и отписками.
• Минусы:
- Не виден в инспекторе. Только для программистов.
Как использовать Action:
1. Объяви событие в классе:
public static Action<int> OnEnemyDied; 2. Для вызова события в нужном месте:
OnEnemyDied?.Invoke(scoreValue); 3. В другом классе подпишись на событие:
GameManager.OnEnemyDied += AddScore; Не забудь отписаться при уничтожении объекта:
void OnDestroy() => GameManager.OnEnemyDied -= AddScore; Итог:
➡️ Используй UnityEvent для настройки взаимодействий между объектами в инспекторе (двери, кнопки, переключатели).
➡️ Используй Action для быстрых и частых событий внутри кода (система достижений, UI, логика игры).
Выбирай инструмент под задачу! 💪
Пост предложил @Fylht009
#Unity #CSharp #GameDev #Events #Gamedevelopment
🔥7❤1 1 1
Привет!👋 Это Nice GameDev — канал, где два хобби сошлись в одном месте!
🎮 Unity-проекты: Смотри, как игры рождаются с нуля: геймдизайн, код, графика и честный разбор косяков.
⚙️ Железо: Знаю всё о том, как собрать мощный ПК для игр и разработки без переплат. Лайфхаки, тесты и свежие новости.
Подписывайся, чтобы не пропустить ничего интересного!
https://t.me/NicePC_RU
🎮 Unity-проекты: Смотри, как игры рождаются с нуля: геймдизайн, код, графика и честный разбор косяков.
⚙️ Железо: Знаю всё о том, как собрать мощный ПК для игр и разработки без переплат. Лайфхаки, тесты и свежие новости.
Подписывайся, чтобы не пропустить ничего интересного!
https://t.me/NicePC_RU
❤7🔥1 1
какие посты вы хотите видеть?
Final Results
63%
образовательные(предложите темы в комментариях, у меня кончились :( )
37%
мемы
55%
игры подписчиков
11%
что то еще? (предложите темы в комментариях)
✅ 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
✅ Pattern Matching в C#: Property и Tuple patterns
Зачем?
Упростить проверки сложных условий. Вместо вложенных
Property pattern
Проверяет свойства объекта прямо в условии:
Tuple pattern
Идеален для проверки нескольких значений одновременно:
Где использовать?
• Вместо громоздких
• Для обработки входных данных (например, результат метода)
• В
Важно!
• Работает в
•
• В property pattern можно проверять вложенные свойства:
💡 Используй эти паттерны для чистого и безопасного кода. Сокращай количество строк и повышай читаемость!
Пост предложил @u006E10011
#CSharp #Unity #Programming #PatternMatching #UnityDev
Зачем?
Упростить проверки сложных условий. Вместо вложенных
if — чистый и читаемый код.Property pattern
Проверяет свойства объекта прямо в условии:
if (weapon is { Ammo: 0, IsReloading: false })
{
// Оружие без патронов и не перезаряжается:
StartReload();
}Tuple pattern
Идеален для проверки нескольких значений одновременно:
string result = (x, y) switch
{
(0, 0) => "Точка в начале координат",
( > 0, > 0) => "Точка в первой четверти",
( < 0, _) => "Точка слева от оси Y", // _ — любое значение
_ => "Точка в другой области"
};
Где использовать?
• Вместо громоздких
if/else для состояний объекта • Для обработки входных данных (например, результат метода)
• В
switch выражениях для возврата значений Важно!
• Работает в
is, switch и switch-выражениях (как выше) •
_ — это discard (игнорирование значения) • В property pattern можно проверять вложенные свойства:
Player { Health: { Current: 0 } } 💡 Используй эти паттерны для чистого и безопасного кода. Сокращай количество строк и повышай читаемость!
Пост предложил @u006E10011
#CSharp #Unity #Programming #PatternMatching #UnityDev
❤8🔥3 1
✅ Кастомные атрибуты в C#: твой код — чище и умнее
Что это?
Специальные метки для переменных, методов или классов. Они не меняют логику, но дают подсказки движку или редактору.
Зачем?
• Валидация данных прямо в инспекторе
• Красивое и логичное группирование полей
• Сокрытие или запрет на редактирование переменных при определенных условиях
• Автоматизация рутинных задач
Как создать?
Наследуйся от класса
Как использовать?
Повесь атрибут над полей класса.
Важно!
• Для отрисовки в инспекторе нужен кастомный Editor скрипт
• Атрибуты работают в рантайме — это мощный инструмент для архитектуры
• Не злоупотребляй сложной логикой в атрибутах
💡 Применяй для: создания понятных инспекторов, валидации настроек, автоматизации.
Создай свой первый атрибут для подсветки поля, если значение отрицательное!
#Unity #CSharp #Programming #Attributes #Gamedev
Что это?
Специальные метки для переменных, методов или классов. Они не меняют логику, но дают подсказки движку или редактору.
Зачем?
• Валидация данных прямо в инспекторе
• Красивое и логичное группирование полей
• Сокрытие или запрет на редактирование переменных при определенных условиях
• Автоматизация рутинных задач
Как создать?
Наследуйся от класса
PropertyAttribute.using UnityEngine;
public class HeaderColorAttribute : PropertyAttribute
{
public readonly Color Color;
public HeaderColorAttribute(float r, float g, float b)
{
Color = new Color(r, g, b);
}
}
Как использовать?
Повесь атрибут над полей класса.
public class Player : MonoBehaviour
{
[HeaderColor(1, 0, 0)] // Красный заголовок
[SerializeField] private string _playerName;
[HeaderColor(0, 1, 0)] // Зеленый заголовок
[SerializeField] private int _health;
}
Важно!
• Для отрисовки в инспекторе нужен кастомный Editor скрипт
• Атрибуты работают в рантайме — это мощный инструмент для архитектуры
• Не злоупотребляй сложной логикой в атрибутах
💡 Применяй для: создания понятных инспекторов, валидации настроек, автоматизации.
Создай свой первый атрибут для подсветки поля, если значение отрицательное!
#Unity #CSharp #Programming #Attributes #Gamedev
1🔥5❤2 1
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁14 6🔥2 2😱1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Разработчики игр, внимание!
Kenney Assets собрал сотни бесплатных 2D и 3D ассетов в одном месте — всё, что нужно для быстрого старта проектов:
1️⃣ Текстуры
2️⃣ Спрайты
3️⃣ Звуки
4️⃣ Шрифты
5️⃣ Модели для VR/AR
🎧 Лицензия полностью открытая — используйте в любых проектах, включая коммерческие. Библиотека постоянно обновляется и доступна всем желающим!
👉 Ссылка на библиотеку
Kenney Assets собрал сотни бесплатных 2D и 3D ассетов в одном месте — всё, что нужно для быстрого старта проектов:
1️⃣ Текстуры
2️⃣ Спрайты
3️⃣ Звуки
4️⃣ Шрифты
5️⃣ Модели для VR/AR
👉 Ссылка на библиотеку
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9