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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
⚡️ 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
🔥10631
Так, маи чуваки. Мои запасы мемов кончаются.

Поэтому пришлите свои мемы в комменты!!
!🎉🎉🎉


@kittysharky жги🎧
Please open Telegram to view this post
VIEW IN TELEGRAM
😁72😱2
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь!

#работыПодписчиков

🎧Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53🎄2
Игра подписчика @ZARKI01

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

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

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

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

Движок: Unity

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

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

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

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

#геймдев #индиразработка #хоррор #unity #godotengine #indiegames #indiedev
🔥43😱1
Рисунок подписчика @Gtima_Orion

А я пожелаю всем хорошей недели!
8🔥6🎄3
Сколько вы заработали на геймдеве за этот месяц?🤔
Anonymous Poll
72%
0 руб 💧
8%
от 100 до 500 руб 🤟
2%
от 500 до 2000 руб🎧
18%
больше 2000 руб 💰
63🔥2
⚡️ Unity: шпаргалка по библиотекам в C#

Сохрани эту шпаргалку! Библиотеки — это как суперспособности для твоего кода. Не пиши велосипеды, используй готовые и проверенные решения.

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🎄21
😭
Please open Telegram to view this post
VIEW IN TELEGRAM
1174🤯1
⚡️ Unity: шпаргалка по Collider

Сохрани, чтобы быстро освежить, какой коллайдер и когда использовать. Без воды — только суть.

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
🔥134🎄31
⚡️ 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🎄31
@mncrzz_dev написал свой собственный движок на C#.
Первый релиз был сегодня. Даже на раннем этапе реализовано несколько функций стандартных движков. Все работает быстро и четко.
Что реализовано:
1. Создание 3д кубов
2. Передвижение объектов
3. Настройка размера, цвета, позиции через инспектор(там он называется Info)
4. Иерархия, что-то вроде консоли и инспектор.


Я считаю в будущем это будет достойная замена.

Как скачать:
загрузить этот файл. это сдк C#
Скачать следующий файл.

Канал разработчика @breadlabs_dev
🔥7😁432🎄1
Tiny3D.zip
8.3 MB
🔥42🎄2
"Напугайте линуксоида меньше, чем пятью словам"

Я:
7😱4😁21
О, нашел прикольный сайт.
Превращает текст в рукописный.
Думаю будет полезно если в свою локацию в игре захотите добавить записку или письмо.

👉 Забираем здесь
Советую НЕ включать впн, когда заходите на сайт👍
Люди, которые делают домашку с гпт, вы знаете что делать😏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥102😱2
Unity исполнилось 20 лет!🥳

Поэтому пройдет офицальный джем с 7 по 10 ноября.

🔗 Ссылка

Призы:
Первое место:
Показано в прямом эфире Unity
Лицензии Unity Pro на 1 год (до 5 лицензий на команду)
Эксклюзивная сумка Unity Swag с кепкой Unity, посвящённой 20-летию бренда

Второе место:
Показано в прямом эфире Unity
Лицензии Unity Pro на 1 год (до 5 лицензий на команду)

Третье место:
Показано в прямом эфире Unity
Лицензии Unity Pro на 1 год (до 5 лицензий на команду)

Важное примечание: «Самое креативное использование юбилейных материалов» — это ЕДИНСТВЕННАЯ категория голосования с соответствующими призами.
9🤯3🔥11
Изменяемое окно игры в Unity

Как настроить?
В сборках под ПК (Windows/Mac/Linux) это делается в настройках плеера.

Пошагово:
1. Открой File → Build Settings
2. Выбери платформу (PC)
3. Нажми Player Settings
4. В разделе Resolution and Presentation:
- Default Is Full Screen — сними галочку
- Fullscreen Mode — выбери "Windowed"
- Resizable Window — отметь галочку (доступно для Windows/Mac)

Важные нюансы:
• Размер окна при старте задаётся в полях Default Screen Width/Height
• Игрок может менять размер перетаскиванием краёв окна
• В коде можно отслеживать изменение размера:

void Update()
{
if (Screen.width != lastWidth || Screen.height != lastHeight)
{
// Пересчитать интерфейс или камеру
UpdateLayout();
lastWidth = Screen.width;
lastHeight = Screen.height;
}
}


Что проверить:
- Интерфейс (UI) должен адаптироваться под разные разрешения
- Камера может требовать перенастройки при изменении пропорций
- Для Windows убедись, что в Target Platform выбрана версия с DX11/OpenGL

💡 Используй для: удобства тестирования, игр с оконным режимом, инструментов разработки.

Советую прочитать пост про настройку Canvas

#Unity #GameDev #Сборка #Unity2D #Unity3D
🔥94😱21
⚙️ Unity: основы ECS

Сохрани, если хочешь выжать максимум производительности из Unity! ECS — это подход, где данные и логика разделены. Идеально для тысяч объектов на сцене.

1️⃣ Из чего состоит ECS?

Entity — просто ID, контейнер для данных. Не GameObject!
Component — структура с данными (позиция, здоровье). Не MonoBehaviour!
System — класс с логикой, которая работает над подходящими компонентами.

2️⃣ Как это работает вместе?

Система MovementSystem автоматически находит все Entity, у которых есть компоненты Position и Velocity, и обновляет их.

3️⃣ Пример кода:

// Компонент - ТОЛЬКО данные
public struct Position : IComponentData
{
public float3 Value;
}

public struct Velocity : IComponentData
{
public float3 Value;
}

// Система - ТОЛЬКО логика
public partial class MovementSystem : SystemBase
{
protected override void OnUpdate()
{
float deltaTime = Time.DeltaTime;

Entities
.ForEach((ref Position pos, in Velocity vel) =>
{
pos.Value += vel.Value * deltaTime;
}).ScheduleParallel();
}
}


💥 Главный плюс: Невероятная производительность за счет кеш-дружественности и многопоточности.

🚀 С чего начать?
Установи пакеты Entities, Hybrid Renderer через Package Manager. Используй ConvertToEntity на GameObject для постепенного перехода.

ECS + Jobs System = Мощь для массовки, пуль и сложных симуляций.

💬 Планируешь использовать ECS в своем проекте?
🔔 Подпишись — впереди разбор DOTS, Jobs System и Burst Compiler!

👉Akrus Games | Unity
🔥93🎄11