Unity: enum, state и switch
Чтобы не было десяти миллионов if else, можно использовать Switch+enum. Рассмотрим на примере состояний:
Важно!
это не полная замена if/else, а частный случай для оптимизации при одномерном выборе.
Таким образом можно рассматривать состояния более оптимизированным способом. Попробуйте внедрить это в свой проект и код будет надежнее(компилятор предупредит о возможных проблемах), удобней(можно проще добавить новые состояния) и читаемее.
Akrus Unity
Чтобы не было десяти миллионов if else, можно использовать Switch+enum. Рассмотрим на примере состояний:
switch (state)//что рассматриваем
{
default:
case State.Idle:
//если idle, то ничего не делаем
break;//завершаем
case State.Roaming:
roamingTime -= Time.deltaTime;
if (roamingTime < 0)
{
Roaming();
roamingTime = roamingTimerMax;
}
//ecли roaming выполняем действие
break;
case State.Attack:
navMeshAgent.SetDestination(player_pos.position);
break;
}
Важно!
это не полная замена if/else, а частный случай для оптимизации при одномерном выборе.
Таким образом можно рассматривать состояния более оптимизированным способом. Попробуйте внедрить это в свой проект и код будет надежнее(компилятор предупредит о возможных проблемах), удобней(можно проще добавить новые состояния) и читаемее.
Akrus Unity
❤7🔥4 2 1
⚡️ Unity: Интерфейсы в C# — сила контрактов
Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в c# не принято делать реализацию функций, свойств, только объявление.
🔥 Зачем это в играх?
Допустим, у тебя есть меч, который может бить врагов и ломать бочки. Без интерфейсов — это ад из
Можно наследовать от любого количества интерфейсов, в отличии от наследования от классов.
Если мы хотим сделать приватное свойство для реализующего интерфейс класса, мы можем не указывать set в свойстве интерфейса
🎯 Реальный пример: взаимодействие с объектами
💡 Два главных плюса:
🔸 Гибкость — добавляй новые разрушаемые объекты без изменения кода меча
🔸 Чистота — избавляешься от гигантских цепочек проверок через GetComponent
🚀 Где ещё использовать?
•
•
•
💬 Используешь интерфейсы в своих проектах? Делися в комментах!
🔔 Подпишись — ещё больше C# фишек для геймдева
Пост помог написать @Nokskiy
👉Akrus Games | Unity
Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в c# не принято делать реализацию функций, свойств, только объявление.
🔥 Зачем это в играх?
Допустим, у тебя есть меч, который может бить врагов и ломать бочки. Без интерфейсов — это ад из
if (collider.GetComponent<Enemy>() != null)... С интерфейсами — чисто и гибко.Можно наследовать от любого количества интерфейсов, в отличии от наследования от классов.
Если мы хотим сделать приватное свойство для реализующего интерфейс класса, мы можем не указывать set в свойстве интерфейса
🎯 Реальный пример: взаимодействие с объектами
public class Bullet : MonoBehaviour
{
private const int _damage = 10;
private void CheckHit()
{
//проверка столкновений с IHealth
hitObj.TakeDamage(_damage);
}
}
public class Player : MonoBehaviour, IHealth
{
// Реализация свойства
public int Health { get; private set; }
// Прочие поля
// Прочии свойства
// Прочии функции
// Реализация функции
public void TakeDamage(int damage) =>
Health -= damage;
}
public interface IHealth
{
// Обьявление свойства Health
int Health { get; }
// Обьявление функции TakeDamage
void TakeDamage(int damage);
}
💡 Два главных плюса:
🔸 Гибкость — добавляй новые разрушаемые объекты без изменения кода меча
🔸 Чистота — избавляешься от гигантских цепочек проверок через GetComponent
🚀 Где ещё использовать?
•
IInteractable для взаимодействия с NPC, дверями, предметами•
ICollectable для сбора монет, аптечек, боеприпасов•
ISaveable для системы сохранений💬 Используешь интерфейсы в своих проектах? Делися в комментах!
🔔 Подпишись — ещё больше C# фишек для геймдева
Пост помог написать @Nokskiy
👉Akrus Games | Unity
❤7🔥3 3
Мы объединились и создали лучшую папку каналов по геймдеву "The Gamedev"!
Это место, где собраны самые полезные, активные и вдохновляющие каналы индустрии, где каждый разработчик найдёт для себя что-то действительно ценное:
Подключайтесь к папке The GameDev и станьте частью сильного комьюнити!
👉 https://t.me/addlist/rzxpwkhTW65hNDQy
Это место, где собраны самые полезные, активные и вдохновляющие каналы индустрии, где каждый разработчик найдёт для себя что-то действительно ценное:
🧑💻 Помощь и практические советы по разработке игр
🆓 Бесплатные раздачи ассетов и промокоды
📣 Актуальные новости геймдева
💰 Советы по заработку на разных игровых площадках
📱 Авторские каналы по геймдизайну
📸 Личные блоги разработчиков
Подключайтесь к папке The GameDev и станьте частью сильного комьюнити!
👉 https://t.me/addlist/rzxpwkhTW65hNDQy
🔥13❤6🤯2
Привет всем новым подписчикам! Я @akrus001 админ этого канала.
Вот сборка лучших обучающих постов
Чат канала @chatAkrus001
Админ @akrus001, по любым вопросам можете спросить.
Советую вам почитать предыдущие посты.
Надеюсь вам здесь понравится!
В это канале в основном публикуются обучающие посты. Иногда что-то более интерактивное.
Раз в неделю я делаю пост, куда можно прислать свои работы. Самые лучшие я опубликую в канал(классно сделал = бесплатная реклама)
Вот сборка лучших обучающих постов
Чат канала @chatAkrus001
Админ @akrus001, по любым вопросам можете спросить.
Советую вам почитать предыдущие посты.
Надеюсь вам здесь понравится!
🔥20❤4 3 1
Знаешь, когда два дня чинишь одну строку кода, а игра всё равно ломается? У меня так было с машинкой, которая кувыркалась на поворотах.
Я потратил 48 часов на поиск бага в физике. Проверил всё. А оказалось, что я использовал
Так вот, что здесь важно:
1. ForceMode в Unity — способ приложения силы.
2. Физику считают в
3. Дебаг начинай с простого. Я лез в дебри, не проверив базовое.
Как не сгореть? Чек-лист:
🔹 Таймер для перерывов. 25 минут работы, 5 минут отдыха.
🔹 Версия 0.1 должна быть уродливой, но работающей. Не гонись за идеалом сразу.
🔹 Геймдиз-док на одной странице. Если не объяснишь игру в трёх предложениях — утонешь.
🔹 Не создавай 1000 ScriptableObject’ов в одной папке. Группируй данные, иначе проект станет свалкой.
🔹 Ищи баг с конца. Начни с последнего изменения. Git — твой друг.
🔹 День без кода — это нормально. Решение часто приходит во время отдыха.
🔹 Показывай игру другу, даже сырую. Со стороны баги виднее.
Ошибки — это не «я плохой», а «я расту». Каждый найденный баг — новый уровень.
Было похожее? 💬 Напиши — разберём. Если тема зашла, сделаю серию про частые косяки. Держись! 🚀
Я потратил 48 часов на поиск бага в физике. Проверил всё. А оказалось, что я использовал
ForceMode.Impulse в FixedUpdate, и силы накапливались, создавая «толчки великана». Два дня — на одну строку. Когда нашёл, смеялся и плакал.Так вот, что здесь важно:
1. ForceMode в Unity — способ приложения силы.
Impulse мгновенно добавляет импульс, а в FixedUpdate он может вызываться слишком часто.2. Физику считают в
FixedUpdate, но осторожно.3. Дебаг начинай с простого. Я лез в дебри, не проверив базовое.
Как не сгореть? Чек-лист:
🔹 Таймер для перерывов. 25 минут работы, 5 минут отдыха.
🔹 Версия 0.1 должна быть уродливой, но работающей. Не гонись за идеалом сразу.
🔹 Геймдиз-док на одной странице. Если не объяснишь игру в трёх предложениях — утонешь.
🔹 Не создавай 1000 ScriptableObject’ов в одной папке. Группируй данные, иначе проект станет свалкой.
🔹 Ищи баг с конца. Начни с последнего изменения. Git — твой друг.
🔹 День без кода — это нормально. Решение часто приходит во время отдыха.
🔹 Показывай игру другу, даже сырую. Со стороны баги виднее.
Ошибки — это не «я плохой», а «я расту». Каждый найденный баг — новый уровень.
Было похожее? 💬 Напиши — разберём. Если тема зашла, сделаю серию про частые косяки. Держись! 🚀
❤18🔥4 3🎄1
Akrus Games | Unity
Photo
Игра подписчика @MounSword_Gtima
╭˚༓─━━┉Артефакт НОВА / Artifact NOVA┉━━─༓˚╮
(Игра от Mountain Sword Studio)
Артефакт НОВА, сюжетная игра в жанре 👁🗨 Психологического хоррора приключения 👁🗨, довольно короткая, но интересная история о неизвестности и таинственном артефакте. Среднее прохождение которой займёт у вас от 15 до 30мин.
📖Предыстория:
⌛️Пару лет назад Корпорацией НОВА обнаружен загадочный артефакт на дне [ЗАСЕКРЕЧЕННО] впадины, происхождение которого неизвестно, но предположительно он был создан древней расой. По некоторым причинам артефакт не удалось поднять на сушу, поэтому пришлось разворачивать базу вокруг артефакта. На данный момент последний отчёт который обещал что следующий отчёт откроет все тайны этого артефакта был отправлен 2 месяца назад, а станция перестала выходить на связь, но при этом подаёт знаки функционирования.
🔹Группа снабжения и проверки под вашим руководством будет отправлена на базу, дабы вы установили что случилось с базой и с группой учёных. Для дальнейших указаний свяжитесь с нами через консоль связи на базе...
Стили игры переплетаются с 2д и 3д. Так же в игре есть пару очень простых мини игр - головоломок.
✨✨Поиграть в игру можно на данных платформах: ✨✨
👁🗨 Yandex Games - телефон и PC
👁🗨 Itch,io - только PC (сайт заблокирован в России)
✨˚༓─━━┉Всем хорошего дня!┉━━─༓˚✨
🔥8❤3 2
Что вы думаете о казуальных играх, с точки зрения игроков?
Anonymous Poll
21%
Лучшие игры 😍
21%
Игры для деградантов👎
57%
Иногда играю, но не высокого мнения о них 😐
❤1🔥1😁1
Привет! Ты когда-нибудь зависал на стадии выбора графики на две недели, а в итоге всё равно скачивал первые попавшиеся ассеты с itch.io? 😅
У меня так и было с моим первым «серьёзным» проектом — рпг про воина-путешественника. Я два дня гуглил «pixel art tutorial», скачал три разных набора спрайтов (все в разном стиле!), пытался их склеить в одном уровне. Получилась жуткая мешанина: воин-путешественник был из мультика, враги — мрачные пиксельные тени, а фон — вообще векторные горы. Смотрелось так, будто игра собрана из обрезков трёх разных игр. И самое обидное — я потратил кучу времени на поиск «той самой» графики, а на сам геймплей сил уже не осталось.
Я злился на себя. Казалось, вот выберу идеальные спрайты — и игра сразу станет крутой. Но на деле я просто топтался на месте, терял мотивацию и в итоге забросил проект. Потому что играть в это было стыдно даже самому.
В чём была ошибка? Я поставил телегу впереди лошади. Графика — это обёртка, а не конфета. Сначала нужно понять, что за игра у тебя под капотом.
Вот несколько простых правил, которые теперь спасают мои проекты:
1. Прототайп на квадратах и кружках. Пока твой геймплей не станет увлекательным с примитивными фигурами — к графике даже не прикасайся. Если игра с квадратиком не заходит, со спрайтом котика не зайдёт.
2. Стиль = твои навыки × сроки. Не замахивайся на сложную отрисовку от руки, если ты не художник и у тебя два месяца. Чистый пиксель-арт, минимализм, геометрические фигуры — твои друзья. Консистентность важнее сложности.
3. Укради! Не буквально, конечно. Собери референс-борд (коллаж) из игр и арта, который тебе нравится. Видишь общее? Может, это палитра, толщина контура или чувство юмора? Это и будет твоей отправной точкой.
4. Один источник — один стиль. Бери весь пак ассетов (персонаж, враги, предметы, фон) у одного автора. Если не хватает — ищи у других с максимально похожим стилем или доделывай сам, подражая.
5. Графика — это геймдизайн. Размер спрайта, его читаемость на фоне, понятная анимация атаки — это часть игрового процесса. Хорошая графика делает игру понятнее, а не просто красивее.
История с котом научила меня главному: совершенство в деталях на старте убивает проекты. Лучше корявая, но законченная игра, чем папка с идеальными, но разрозненными спрайтами в стиле «как бы красиво».
Ошибки и недели топтания — это не провал. Это самый честный способ понять, как делать надо. Просто в следующий раз начинай не с картинки, а с чувства. С той фишки, от которой сам не можешь оторваться.
А у тебя был проект, который утонул в поисках идеальной графики? Поделись в комментах, дай мне знать, что я не один такой! Если тема зашла, могу разобрать конкретные стили и где их искать. Удачи в разработке! 🚀
У меня так и было с моим первым «серьёзным» проектом — рпг про воина-путешественника. Я два дня гуглил «pixel art tutorial», скачал три разных набора спрайтов (все в разном стиле!), пытался их склеить в одном уровне. Получилась жуткая мешанина: воин-путешественник был из мультика, враги — мрачные пиксельные тени, а фон — вообще векторные горы. Смотрелось так, будто игра собрана из обрезков трёх разных игр. И самое обидное — я потратил кучу времени на поиск «той самой» графики, а на сам геймплей сил уже не осталось.
Я злился на себя. Казалось, вот выберу идеальные спрайты — и игра сразу станет крутой. Но на деле я просто топтался на месте, терял мотивацию и в итоге забросил проект. Потому что играть в это было стыдно даже самому.
В чём была ошибка? Я поставил телегу впереди лошади. Графика — это обёртка, а не конфета. Сначала нужно понять, что за игра у тебя под капотом.
Вот несколько простых правил, которые теперь спасают мои проекты:
1. Прототайп на квадратах и кружках. Пока твой геймплей не станет увлекательным с примитивными фигурами — к графике даже не прикасайся. Если игра с квадратиком не заходит, со спрайтом котика не зайдёт.
2. Стиль = твои навыки × сроки. Не замахивайся на сложную отрисовку от руки, если ты не художник и у тебя два месяца. Чистый пиксель-арт, минимализм, геометрические фигуры — твои друзья. Консистентность важнее сложности.
3. Укради! Не буквально, конечно. Собери референс-борд (коллаж) из игр и арта, который тебе нравится. Видишь общее? Может, это палитра, толщина контура или чувство юмора? Это и будет твоей отправной точкой.
4. Один источник — один стиль. Бери весь пак ассетов (персонаж, враги, предметы, фон) у одного автора. Если не хватает — ищи у других с максимально похожим стилем или доделывай сам, подражая.
5. Графика — это геймдизайн. Размер спрайта, его читаемость на фоне, понятная анимация атаки — это часть игрового процесса. Хорошая графика делает игру понятнее, а не просто красивее.
История с котом научила меня главному: совершенство в деталях на старте убивает проекты. Лучше корявая, но законченная игра, чем папка с идеальными, но разрозненными спрайтами в стиле «как бы красиво».
Ошибки и недели топтания — это не провал. Это самый честный способ понять, как делать надо. Просто в следующий раз начинай не с картинки, а с чувства. С той фишки, от которой сам не можешь оторваться.
А у тебя был проект, который утонул в поисках идеальной графики? Поделись в комментах, дай мне знать, что я не один такой! Если тема зашла, могу разобрать конкретные стили и где их искать. Удачи в разработке! 🚀
❤13🔥8🤯1😱1 1 1 1
🔥10 5🎄3🤯1
Media is too big
VIEW IN TELEGRAM
Недавно я проводил опрос в одном из чатов по моей любимой игре Hollow knight(метроидвания).
Вкратце объяснить чудо этой игры не получится, поэтому прикреплю релизный трейлер.
Спустя день большинство проголосовали за хардкорный геймплей и музыку(81%), и не много отстает графика(75%).
Меньше было у карты(т.е. мира игры)(57%) и сюжет(66%).
Из этого можно сделать вывод, что ваш супер закрученный сюжет, из-за которого вы не спали ночами, не так уже и важен, как хорошо проработанная графика, и красивейшая музыка. Это в первую очередь из-за того, что графика это первое что видит игрок, музыка это то, что его сопровождает в пути к боссу, из-за которого он умер. По поводу хардкорного геймплея скажу меньше, так как он встречается не в начале игры, а у же после того как пройдешь больше 90% процентов.
В итоге: сделайте самым лучшим, то что увидит игрок первый раз и то, что он будет видеть чаще всего. Т.е. графика и музыка - складывают впечатление об игре.
В комментах пришлю несколько саундтреков из игры.
Вкратце объяснить чудо этой игры не получится, поэтому прикреплю релизный трейлер.
Вопрос был такой: "Из-за чего вам нравится hollow knight?"
И варианты ответа:
1. Графика
2. Музыка
3. Сюжет
4. Хардкорный геймплей
5. Карта
6. Что-то еще?
Спустя день большинство проголосовали за хардкорный геймплей и музыку(81%), и не много отстает графика(75%).
Меньше было у карты(т.е. мира игры)(57%) и сюжет(66%).
Из этого можно сделать вывод, что ваш супер закрученный сюжет, из-за которого вы не спали ночами, не так уже и важен, как хорошо проработанная графика, и красивейшая музыка. Это в первую очередь из-за того, что графика это первое что видит игрок, музыка это то, что его сопровождает в пути к боссу, из-за которого он умер. По поводу хардкорного геймплея скажу меньше, так как он встречается не в начале игры, а у же после того как пройдешь больше 90% процентов.
В итоге: сделайте самым лучшим, то что увидит игрок первый раз и то, что он будет видеть чаще всего. Т.е. графика и музыка - складывают впечатление об игре.
❤12😁4🔥3🎄1
Сегодня активчик!
Пришлите в комментарии свою мышку и клавиатуру.
Посмотрим какие девайсы у программистов.
На фото моя мышка(bloody a70) и клава(китайская за 300 руб).
Akrus Games
Пришлите в комментарии свою мышку и клавиатуру.
Посмотрим какие девайсы у программистов.
На фото моя мышка(bloody a70) и клава(китайская за 300 руб).
Akrus Games
❤11🔥3
✅ 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
⚡️ 5 C# фишек, которые прокачают твой Unity-код
Сохрани — используешь каждый день, если хочешь писать чисто и современно.
1️⃣ ?? и ??=
📌 ?? — дефолт при null, ??= — инициализация, если объект ещё не создан.
В Unity:
• Подходит для ленивой инициализации компонентов
• Отлично работает с GetComponent() и кастомными системами DI
2️⃣ switch expression
📌 Читается лучше, чем громоздкий switch { case }, особенно в UI-слоях и инспекторных тулзах.
В Unity:
• Используй в кастомных инспекторах, отображении состояний, локализации
3️⃣ Интерполяция строк $""
📌 Быстрее и безопаснее, чем +. Упрощает логи на этапе разработки.
В Unity:
• Используй для логирования, UI-отладчика, вывода инфы в EditorWindow
4️⃣ using var (C# 8+)
📌 Безопасное использование ресурсов — автоматически закроется, даже при исключении.
В Unity:
• Полезно при работе с файлами, AssetBundle, StreamingAssets
• Работает только в .NET 4.x / Unity с C# 8+
5️⃣ readonly struct и in параметры (бонус)
📌 Меньше копий, больше производительности. Актуально в ECS и при передаче больших структур.
💬 Какие из этих ты уже используешь в Unity?
🔔 Подписывайся — будет ещё про Span<T>, LINQ и новые C# фичи в Unity
👉Akrus Games | Unity
Сохрани — используешь каждый день, если хочешь писать чисто и современно.
1️⃣ ?? и ??=
playerName = inputName ?? "Без имени";
list ??= new List<int>();
📌 ?? — дефолт при null, ??= — инициализация, если объект ещё не создан.
В Unity:
• Подходит для ленивой инициализации компонентов
• Отлично работает с GetComponent() и кастомными системами DI
2️⃣ switch expression
string label = state switch {
GameState.Menu => "В меню",
GameState.Playing => "Играем",
_ => "?"
};📌 Читается лучше, чем громоздкий switch { case }, особенно в UI-слоях и инспекторных тулзах.
В Unity:
• Используй в кастомных инспекторах, отображении состояний, локализации
3️⃣ Интерполяция строк $""
Debug.Log($"Игрок: {playerName}, Очки: {score}");
📌 Быстрее и безопаснее, чем +. Упрощает логи на этапе разработки.
В Unity:
• Используй для логирования, UI-отладчика, вывода инфы в EditorWindow
4️⃣ using var (C# 8+)
using var stream = File.OpenRead(path);
📌 Безопасное использование ресурсов — автоматически закроется, даже при исключении.
В Unity:
• Полезно при работе с файлами, AssetBundle, StreamingAssets
• Работает только в .NET 4.x / Unity с C# 8+
5️⃣ readonly struct и in параметры (бонус)
readonly struct DamageInfo {
public readonly int amount;
public readonly Vector3 direction;
}
void ApplyDamage(in DamageInfo info) { ... }📌 Меньше копий, больше производительности. Актуально в ECS и при передаче больших структур.
💬 Какие из этих ты уже используешь в Unity?
🔔 Подписывайся — будет ещё про Span<T>, LINQ и новые C# фичи в Unity
👉Akrus Games | Unity
🔥13❤2 1
🔥4❤1
Возможно, у кого-то есть старый аккаунт Google Play Разработчика (до 2023 года). Есть возможность хорошо заработать на этом.
Закрытые за неактив аккаунты тоже принимаются(их можно восстановить)
Подробнее в ЛС @Ilya01s.
Закрытые за неактив аккаунты тоже принимаются(их можно восстановить)
Подробнее в ЛС @Ilya01s.
⚡️ Unity: 5 вещей, которые убивают оптимизацию
Твой проект лагает даже на сцене с кубиками? Скорее всего, причина в одной из этих 5 ошибок. Устрани их — и производительность сразу вырастет.
1️⃣ Бесконечный поток новых объектов (Instantiate/Destroy)
Это хаос в памяти! Создание и удаление объекта — тяжёлые операции для Garbage Collector (GC).
📌 Что делать: Используй пул объектов (Object Pooling). Создай заранее 10 пуль, 20 врагов или 100 эффектов. Переиспользуй их, а не создавай заново.
💡 Создай один раз, спрячь (SetActive(false)), доставай когда нужно.
2️⃣ Полноценный Update() там, где можно обойтись
Проверка условия в Update() 60 раз в секунду — дикая нагрузка, если это не требуется.
📌 Что делать: Вместо
💡 Замени
3️⃣ Слишком много объектов на сцене с коллайдерами
Каждый коллайдер — нагрузка на физику (Physics Engine). 100 активных Rigidbody и BoxCollider = гарантированные тормоза.
📌 Что делать: Отключай (
💡 Ставь Static Flag для неподвижных объектов — физический движок их оптимизирует.
4️⃣ Сырые текстуры и модели
Загрузил в проект 4K текстуру для кнопки? Модель с 100к полигонов для камня? Память съедена, а FPS упал.
📌 Что делать: Всегда сжимай текстуры (Format: ASTC, ETC2). Оптимизируй полигоны моделей. Используй спрайт-атласы для 2D.
💡 В окне Import Settings задавай максимальный размер текстуры (Max Size 1024 для фона — уже много).
5️⃣ Глобальные переменные в скриптах
Постоянные обращения типа
📌 Что делать: Кэшируй ссылки! Выполни поиск в Start() или Awake() и сохрани в приватную переменную. Обращайся уже к ней.
💡 Вместо
🔥 Проверь свой проект по этим пунктам прямо сейчас. Чаще всего проблема в первых трёх!
📌 Сохрани этот чек-лист перед каждым билдом.
🔔 Подписывайся — дальше будет про оптимизацию UI, Shader'ов и памяти на мобилках.
💬 А с какой проблемой сталкивался ты? Пиши в комментах!
👉Akrus Games | Unity
Твой проект лагает даже на сцене с кубиками? Скорее всего, причина в одной из этих 5 ошибок. Устрани их — и производительность сразу вырастет.
1️⃣ Бесконечный поток новых объектов (Instantiate/Destroy)
Это хаос в памяти! Создание и удаление объекта — тяжёлые операции для Garbage Collector (GC).
📌 Что делать: Используй пул объектов (Object Pooling). Создай заранее 10 пуль, 20 врагов или 100 эффектов. Переиспользуй их, а не создавай заново.
💡 Создай один раз, спрячь (SetActive(false)), доставай когда нужно.
2️⃣ Полноценный Update() там, где можно обойтись
Проверка условия в Update() 60 раз в секунду — дикая нагрузка, если это не требуется.
📌 Что делать: Вместо
if (isReady) в Update() используй корутину с WaitForSeconds или InvokeRepeating. Для физики — FixedUpdate. Для событий — подписки (event/delegate).💡 Замени
void Update() на IEnumerator MyTimer() везде, где это возможно.3️⃣ Слишком много объектов на сцене с коллайдерами
Каждый коллайдер — нагрузка на физику (Physics Engine). 100 активных Rigidbody и BoxCollider = гарантированные тормоза.
📌 Что делать: Отключай (
enabled = false) коллайдеры у далёких или неактивных объектов. Для статичной декорации используй один Mesh Collider вместо сотни примитивных.💡 Ставь Static Flag для неподвижных объектов — физический движок их оптимизирует.
4️⃣ Сырые текстуры и модели
Загрузил в проект 4K текстуру для кнопки? Модель с 100к полигонов для камня? Память съедена, а FPS упал.
📌 Что делать: Всегда сжимай текстуры (Format: ASTC, ETC2). Оптимизируй полигоны моделей. Используй спрайт-атласы для 2D.
💡 В окне Import Settings задавай максимальный размер текстуры (Max Size 1024 для фона — уже много).
5️⃣ Глобальные переменные в скриптах
Постоянные обращения типа
FindObjectOfType<GameManager>() или GetComponent<>() в Update — это вызовы каждый кадр.📌 Что делать: Кэшируй ссылки! Выполни поиск в Start() или Awake() и сохрани в приватную переменную. Обращайся уже к ней.
💡 Вместо
GetComponent<Renderer>().material.color в цикле — сохрани Renderer _myRenderer один раз.🔥 Проверь свой проект по этим пунктам прямо сейчас. Чаще всего проблема в первых трёх!
📌 Сохрани этот чек-лист перед каждым билдом.
🔔 Подписывайся — дальше будет про оптимизацию UI, Shader'ов и памяти на мобилках.
💬 А с какой проблемой сталкивался ты? Пиши в комментах!
👉Akrus Games | Unity
❤17🔥9 2 1