Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Unity: как оптимизировать код. Советы для профи
Сохрани — эти правила спасут твой проект от лагов и помогут выжать максимум FPS. Не теория, а то, что используют в реальных проектах.
1️⃣ Избегай строковых операций в циклах — невидимый убийца производительности
❌ Плохо:
✅ Правильно:
💡 Сравнение по тегу через CompareTag в 2-3 раза быстрее. Хеширование параметров аниматора исключает дорогостоящие поиски по строке каждый кадр.
2️⃣ Пулинг объектов — создавай объекты заранее
❌ Плохо: Instantiate() при появлении пули.
✅ Правильно: создай массив пуль при старте и переиспользуй их.
💡 Для всего, что появляется часто (пули, враги, эффекты), пулинг — must have. Никакого мусора для GC.
3️⃣ Избегай лишних вызовов в Update()
Вместо проверки каждого кадра:
Используй корутины или InvokeRepeating:
💡 Счетчик раз в секунду вместо 60 раз в секунду — вот оно, спасение CPU.
🔥 Особенно хеширование параметров аниматора — это профессиональный прием, который сразу показывает уровень разработчика.
💬 А ты хешируешь параметры аниматора или все еще используешь строки?
🔔 Подпишись — скоро разберем продвинутые методы: Job System, Burst Compiler и бенчмаркинг.
👉Akrus Games | Unity
Сохрани — эти правила спасут твой проект от лагов и помогут выжать максимум FPS. Не теория, а то, что используют в реальных проектах.
1️⃣ Избегай строковых операций в циклах — невидимый убийца производительности
❌ Плохо:
void Update() {
if (gameObject.tag == "Player") { }
animator.SetTrigger("Attack");
}✅ Правильно:
private static readonly int AttackHash = Animator.StringToHash("Attack");
void Update() {
if (gameObject.CompareTag("Player")) { }
animator.SetTrigger(AttackHash);
}💡 Сравнение по тегу через CompareTag в 2-3 раза быстрее. Хеширование параметров аниматора исключает дорогостоящие поиски по строке каждый кадр.
2️⃣ Пулинг объектов — создавай объекты заранее
❌ Плохо: Instantiate() при появлении пули.
✅ Правильно: создай массив пуль при старте и переиспользуй их.
List<GameObject> _bulletPool = new List<GameObject>();
💡 Для всего, что появляется часто (пули, враги, эффекты), пулинг — must have. Никакого мусора для GC.
3️⃣ Избегай лишних вызовов в Update()
Вместо проверки каждого кадра:
void Update()
{
if (condition) DoSomething();
}
Используй корутины или InvokeRepeating:
IEnumerator CheckWithDelay() {
while (true) {
yield return new WaitForSeconds(1f);
if (condition) DoSomething();
}
}💡 Счетчик раз в секунду вместо 60 раз в секунду — вот оно, спасение CPU.
🔥 Особенно хеширование параметров аниматора — это профессиональный прием, который сразу показывает уровень разработчика.
💬 А ты хешируешь параметры аниматора или все еще используешь строки?
🔔 Подпишись — скоро разберем продвинутые методы: Job System, Burst Compiler и бенчмаркинг.
👉Akrus Games | Unity
🔥10❤6 3 1
Так, маи чуваки. Мои запасы мемов кончаются.
Поэтому пришлите свои мемы в комменты!!!🎉 🎉 🎉
@kittysharky жги 🎧
Поэтому пришлите свои мемы в комменты!!!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7❤2😱2
Игра подписчика @ZARKI01
The Unknown Parameter / Неизвестный Параметр
Жанр: Atmospheric survival-horror от первого лица.
Сеттинг: Луна. Вы космонавт, отправленный на поиски пропавшей научной экспедиции.
Что ждёт внутри: Найти можно лишь их трупы... и «это», что за ними охотилось. Забрать образцы и бежать к кораблю под аккомпанемент панических сообщений с луны. Атмосфера одиночества, паники и безысходности в духе классических космических ужасов.
Движок: Unity
Пишу на C#, активно учусь и прототипирую. В планах небольшой, но концентрированный и пугающий опыт.
Следите за развитием! Буду делиться скриншотами, гифками и болью геймдева.
Этот проект я буду делать постепенно, так как ещё пока осваиваю Юнити, и поэтому разработка может длиться от нескольких месяцев.
Тгк - https://t.me/minikraft2010fnaf
#геймдев #индиразработка #хоррор #unity #godotengine #indiegames #indiedev
🔥4❤3😱1
Сколько вы заработали на геймдеве за этот месяц?🤔
Anonymous Poll
72%
0 руб 💧
8%
от 100 до 500 руб 🤟
2%
от 500 до 2000 руб🎧
18%
больше 2000 руб 💰
❤6 3🔥2
⚡️ Unity: шпаргалка по библиотекам в C#
Сохрани эту шпаргалку! Библиотеки — это как суперспособности для твоего кода. Не пиши велосипеды, используй готовые и проверенные решения.
1️⃣ LINQ (Language Integrated Query)
🎯 Для чего: Упрощает работу с коллекциями (массивы, списки). Фильтрация, сортировка, поиск — в одну строку.
💡 Простой пример:
📌
2️⃣ Newtonsoft.Json (JSON.NET)
🎯 Для чего: Самый популярный инструмент для работы с JSON. Сохранение данных настроек, загрузка конфигов с сервера.
💡 Простой пример:
📌 Ставь через Package Manager (NuGet) или из Asset Store.
✅ Итог: Освой LINQ — будешь быстро управлять данными. Подключи Newtonsoft.Json — легко работать с сохранениями и API.
📌 Сохрани, чтобы не забыть синтаксис!
💬 Какие библиотеки используешь ты? Делись в комментариях!
🔔 Подпишись — каждый день полезности по C# и Unity!
👉Akrus Games | Unity
Сохрани эту шпаргалку! Библиотеки — это как суперспособности для твоего кода. Не пиши велосипеды, используй готовые и проверенные решения.
1️⃣ LINQ (Language Integrated Query)
🎯 Для чего: Упрощает работу с коллекциями (массивы, списки). Фильтрация, сортировка, поиск — в одну строку.
💡 Простой пример:
// Найти всех врагов с здоровьем > 50
var strongEnemies = enemiesList.Where(e => e.health > 50);
// Получить список только имён
var names = enemiesList.Select(e => e.name);
📌
using System.Linq; — не забудь эту директиву!2️⃣ Newtonsoft.Json (JSON.NET)
🎯 Для чего: Самый популярный инструмент для работы с JSON. Сохранение данных настроек, загрузка конфигов с сервера.
💡 Простой пример:
// Сериализация объекта в JSON-строку
string json = JsonConvert.SerializeObject(playerData);
// Обратно из строки в объект
PlayerData loadedData = JsonConvert.DeserializeObject<PlayerData>(json);
📌 Ставь через Package Manager (NuGet) или из Asset Store.
✅ Итог: Освой LINQ — будешь быстро управлять данными. Подключи Newtonsoft.Json — легко работать с сохранениями и API.
📌 Сохрани, чтобы не забыть синтаксис!
💬 Какие библиотеки используешь ты? Делись в комментариях!
🔔 Подпишись — каждый день полезности по C# и Unity!
👉Akrus Games | Unity
❤8🔥5🎄2 1
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Unity: шпаргалка по Collider
Сохрани, чтобы быстро освежить, какой коллайдер и когда использовать. Без воды — только суть.
1️⃣ Примитивные коллайдеры (Box, Sphere, Capsule)
🎯 Идеально для 90% объектов!
• Box Collider — стены, ящики, платформы.
• Sphere Collider — шары, камни, предметы.
• Capsule Collider — персонажи, вертикальные объекты.
💡 Совет: Ставь
2️⃣ Mesh Collider vs Primitive
• Mesh Collider — точное повторение сложной 3D-модели. Тяжелый! Используй только для статичных объектов (например, скала сложной формы).
• Primitive Collider — легкий, быстрый. Всегда выбирай его для движущихся объектов.
📌 Важно: В Mesh Collider галочка
3️⃣ 2D коллайдеры (Box Collider 2D, Circle Collider 2D)
• Работают только с другими 2D коллайдерами!
• Нужен Rigidbody 2D для физики.
• Для триггера используй
💡 Запомни: 2D и 3D коллайдеры никогда не взаимодействуют.
4️⃣ Важные настройки
• Material — определяет физические свойства (трение, упругость).
• Is Trigger — объект пропускает другие объекты, но генерирует события
• Rigidbody — без него объект будет статичным и не будет реагировать на физическое воздействие.
🔥 Главное правило: Используй самые простые коллайдеры, которые достаточно точно описывают форму объекта. Производительность скажет спасибо!
📌 Сохрани шпаргалку!
💬 Чаще всего используешь Box или Sphere?
👉Akrus Games | Unity
Сохрани, чтобы быстро освежить, какой коллайдер и когда использовать. Без воды — только суть.
1️⃣ Примитивные коллайдеры (Box, Sphere, Capsule)
🎯 Идеально для 90% объектов!
• Box Collider — стены, ящики, платформы.
• Sphere Collider — шары, камни, предметы.
• Capsule Collider — персонажи, вертикальные объекты.
💡 Совет: Ставь
Is Trigger = true, если объект должен быть сквозным (монетки, зона диалога).2️⃣ Mesh Collider vs Primitive
• Mesh Collider — точное повторение сложной 3D-модели. Тяжелый! Используй только для статичных объектов (например, скала сложной формы).
• Primitive Collider — легкий, быстрый. Всегда выбирай его для движущихся объектов.
📌 Важно: В Mesh Collider галочка
Convex позволяет сталкиваться с другими Mesh Collider.3️⃣ 2D коллайдеры (Box Collider 2D, Circle Collider 2D)
• Работают только с другими 2D коллайдерами!
• Нужен Rigidbody 2D для физики.
• Для триггера используй
Is Trigger.💡 Запомни: 2D и 3D коллайдеры никогда не взаимодействуют.
4️⃣ Важные настройки
• Material — определяет физические свойства (трение, упругость).
• Is Trigger — объект пропускает другие объекты, но генерирует события
OnTriggerEnter.• Rigidbody — без него объект будет статичным и не будет реагировать на физическое воздействие.
🔥 Главное правило: Используй самые простые коллайдеры, которые достаточно точно описывают форму объекта. Производительность скажет спасибо!
📌 Сохрани шпаргалку!
💬 Чаще всего используешь Box или Sphere?
👉Akrus Games | Unity
🔥13❤4🎄3 1
⚡️ Unity: шпаргалка по чистому коду
Сохраняй себе — эти правила сделают твой код читаемым, поддерживаемым и профессиональным.
📝 Именование — это всё
•
•
•
• Не используй сокращения:
🎯 Принцип единственной ответственности (SRP)
Один класс = одна задача.
🚫 Избегай магических чисел
Вместо
🔌 Используй [SerializeField] и приватные поля
Так ты скрываешь логику, но оставляешь настройку в Инспекторе.
⚡️ Быстрая инициализация через [SerializeField]
Забудь про
🔄 Кэшируй частые вызовы
Вместо
🎮 События (Events) — для связи между скриптами
Система событий делает код независимым.
💎 Краткость = профессионализм
Читаемый код > умный код.
💬 Какой главный принцип чистого кода используешь ты?
🔔 Подпишись — больше шпаргалок по C# и Unity уже скоро!
👉Akrus Games | Unity
Сохраняй себе — эти правила сделают твой код читаемым, поддерживаемым и профессиональным.
📝 Именование — это всё
•
Классы, Методы — с большой буквы: PlayerMovement, CalculateDamage()•
переменные, поля — с маленькой буквы: health, isGrounded•
CONSTANTS — через подчёркивание: MAX_SPEED• Не используй сокращения:
spd ❌, speed ✅🎯 Принцип единственной ответственности (SRP)
Один класс = одна задача.
PlayerInput → читает ввод.PlayerMovement → двигает.PlayerHealth → отвечает за здоровье.🚫 Избегай магических чисел
Вместо
if (distance < 10) пиши:private float _attackRange = 10f;if (distance < _attackRange)🔌 Используй [SerializeField] и приватные поля
[SerializeField] private float _jumpForce;
Так ты скрываешь логику, но оставляешь настройку в Инспекторе.
⚡️ Быстрая инициализация через [SerializeField]
Забудь про
public GameObject bullet; и ручное перетаскивание. Помечай поле как [SerializeField] private GameObject _bulletPrefab; и назначай префаб прямо в инспекторе. Это безопаснее и быстрее.🔄 Кэшируй частые вызовы
Вместо
GetComponent<>() в Update:private Rigidbody _rb;
void Start() { _rb = GetComponent<Rigidbody>(); }
🎮 События (Events) — для связи между скриптами
Система событий делает код независимым.
public static event System.Action OnPlayerDeath;
// Где-то в другом скрипте:
GameManager.OnPlayerDeath += HandlePlayerDeath;
💎 Краткость = профессионализм
Читаемый код > умный код.
💬 Какой главный принцип чистого кода используешь ты?
🔔 Подпишись — больше шпаргалок по C# и Unity уже скоро!
👉Akrus Games | Unity
❤10🔥6🎄3 1
@mncrzz_dev написал свой собственный движок на C#.
Первый релиз был сегодня. Даже на раннем этапе реализовано несколько функций стандартных движков. Все работает быстро и четко.
Я считаю в будущем это будет достойная замена.
Как скачать:
загрузить этот файл. это сдк C#
Скачать следующий файл.
Канал разработчика @breadlabs_dev
Первый релиз был сегодня. Даже на раннем этапе реализовано несколько функций стандартных движков. Все работает быстро и четко.
Что реализовано:
1. Создание 3д кубов
2. Передвижение объектов
3. Настройка размера, цвета, позиции через инспектор(там он называется Info)
4. Иерархия, что-то вроде консоли и инспектор.
Я считаю в будущем это будет достойная замена.
Как скачать:
загрузить этот файл. это сдк C#
Скачать следующий файл.
Канал разработчика @breadlabs_dev
🔥7😁4❤3 2🎄1
О, нашел прикольный сайт.
Превращает текст в рукописный.
Думаю будет полезно если в свою локацию в игре захотите добавить записку или письмо.
👉 Забираем здесь
Советую НЕ включать впн, когда заходите на сайт👍
Люди, которые делают домашку с гпт, вы знаете что делать 😏
Превращает текст в рукописный.
Думаю будет полезно если в свою локацию в игре захотите добавить записку или письмо.
👉 Забираем здесь
Советую НЕ включать впн, когда заходите на сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤2😱2
Какие посты вы хотите видеть?
Anonymous Poll
29%
больше интерактива
43%
мемы
56%
обучающие(мне кажется я уже рассказал все что мог)
39%
что-то менее связанное с геймдевом
16%
свой вариант в комментарии
❤2🔥1 1 1 1
Unity исполнилось 20 лет!🥳
Поэтому пройдет офицальный джем с 7 по 10 ноября.
🔗 Ссылка
Призы:
Важное примечание: «Самое креативное использование юбилейных материалов» — это ЕДИНСТВЕННАЯ категория голосования с соответствующими призами.
Поэтому пройдет офицальный джем с 7 по 10 ноября.
🔗 Ссылка
Призы:
Первое место:
Показано в прямом эфире Unity
Лицензии Unity Pro на 1 год (до 5 лицензий на команду)
Эксклюзивная сумка Unity Swag с кепкой Unity, посвящённой 20-летию бренда
Второе место:
Показано в прямом эфире Unity
Лицензии Unity Pro на 1 год (до 5 лицензий на команду)
Третье место:
Показано в прямом эфире Unity
Лицензии Unity Pro на 1 год (до 5 лицензий на команду)
Важное примечание: «Самое креативное использование юбилейных материалов» — это ЕДИНСТВЕННАЯ категория голосования с соответствующими призами.
❤9🤯3🔥1 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