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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15
🎥 Cinemachine: Профессиональные камеры в Unity

Что это?
Система для создания кинематографичных камер. Настраивай поведение камер без тонн кода!

Зачем?
• Плавное слежение за игроком/объектом
• Автоматические переходы между камерами
• Эффектные ракурсы в кат-сценах
• Умное избегание препятствий
• Реакция на события (тряска, зум)

Базовый пример:
1. Установи Cinemachine через Package Manager
2. Создай Virtual Camera: Cinemachine > Create 2D Camera
3. Настрой:
- Follow Target: укажи игрока
- Look At Target: выбери объект фокуса
- Body/Lens: регулируй отступы и FOV

Типы камер:
- FreeLook: Камера-шарнир (подходит для 3D-персонажей)
- StateDriven: Автопереключение камер по анимациям
- Dolly Track: Движение по рельсам для кат-сцен
- MixerCamera: Совмещение нескольких ракурсов

Лайфхак для следящей камеры:
// Добавить тряску при выстреле:
public void ShakeCamera() {
CinemachineImpulseSource impulse = GetComponent<CinemachineImpulseSource>();
impulse.GenerateImpulse();
}

Важно:
• Настрой Noise Profiles для органичных движений
• Используй Confiner для ограничения камеры коллайдером
• Регулируй Damping для резкости/плавности поворотов

💡 Замени стандартные камеры на Cinemachine — это уровень PRO!
#Unity #Cinemachine #GameDev #Gamedevelopment
5
Forwarded from Dimatit Games 🚨
This media is not supported in your browser
VIEW IN TELEGRAM
Dimatit jam

Геймджем будет проходить с 15 по 18 августа.

💰Призовой фонд 4500+* рублей:
🥇 1 место — 2 000 ₽
🥈 2 место — 1 250 ₽
🥉 3 место — 750 ₽
🍺4 место — 500 ₽
Бонус:
📱 5 место – любая игра в стим до 50₽


*можно увеличить призовой фонд! Или написать в лс: @bodr5

Голосование будет проходит по следующим критериям:
🍒 Геймплей
🍒 Визуал
🍒 Соответствие теме
🍒 Общее впечатление

БОНУСНЫЕ ИСПЫТАНИЯ:

Дополнительные условия (каждое = +1 балл):

Обучение встроено в геймплей
Дневник разработчика
У игры есть финал

Результаты будут объявлены в канале организатора: Dimatit Games. 23.08.2025

Огранизатор: @bodr5

Подробнее читайте на странице джема:
https://itch.io/jam/3000-dimatit-jam

Dimatit Games
Please open Telegram to view this post
VIEW IN TELEGRAM
6🎄22
😂
Please open Telegram to view this post
VIEW IN TELEGRAM
62
This media is not supported in your browser
VIEW IN TELEGRAM
🕹️ New Input System: Кроссплатформенное управление

Что это?
Новая система ввода от Unity. Управляй игроком с клавиатуры, мыши, тача или геймпада через единый интерфейс.

Зачем переходить?
• Поддержка любых устройств "из коробки"
• Четкое разделение действий (Actions) и устройств (Devices)
• Проще ремаппинг (смена клавиш)
• Мощная система событий и состояний
• Визуальная отладка через Input Debugger

Как начать?
1. Установи пакет Input System через Package Manager
2. Создай Input Actions Asset (ПКМ в Project View → Create → Input Actions)
3. Настрой Actions (например: "Move", "Jump", "Shoot")
4. Привяжи устройства к Actions (WASD/Стрелки/Стик геймпада → "Move")
5. Добавь компонент Player Input на игрока

Пример кода (чтение ввода):
public class Movement : MonoBehaviour
{
private InputActions controls;

void Awake()
{
controls = new InputActions();
controls.Player.Move.performed += ctx => Move(ctx.ReadValue<Vector2>());
}

void Move(Vector2 direction)
{
// Перемещаем объект (напр., Rigidbody.velocity = direction * speed)
Debug.Log("Движение: " + direction);
}

void OnEnable() => controls.Enable();
void OnDisable() => controls.Disable();
}

Важно!
• Используй Input Action Assets вместо старых Input.GetKey()
• Для UI используй Input System UI Input Module
• Настрой Control Schemes для разных устройств (PC, Mobile, Gamepad)
• Тестируй ремаппинг через Rebinding UI

💡 Применение:
- Плавное переключение между геймпадом и мышью
- Кастомизация управления в настройках игры
- Мобильные джойстики за 5 минут

Переходи на New Input System — пиши универсальный код!
#Unity #GameDev #InputSystem #Gamedevelopment
7
🥲
Please open Telegram to view this post
VIEW IN TELEGRAM
😁52
Поздравляю с днём рождением тебя, Телеграм!
Ты помог мне найти много знакомых, помог создать канал, где я набрал любимых папищиков.
Помог пообщаться с людьми в разных чатах и узнать много нового!
Спасибо Дуров, за то что создал телеграм!
5
Unity: Addressables — умная загрузка ассетов

Что это?
Система для динамической загрузки ресурсов (модели, текстуры, сцены) без захламления памяти. Как "умный склад" для ваших ассетов!

Зачем?
• Уменьшает размер начальной сборки игры
• Загружает контент по требованию (например, уровни)
• Обновляет ассеты без перевыпуска приложения
• Упрощает работу с большими проектами
• Подходит для всех платформ (PC, мобильные, WebGL)

Как начать?
1. Включи в Package Manager: Window > Asset Management > Addressables
2. Пометь ассет как Addressable:
- Выбери ресурс (префаб, текстуру)
- В инспекторе нажми "Addressable" + задай уникальный ключ
3. Загрузи в коде:

using UnityEngine.AddressableAssets;

// Загрузка префаба
Addressables.LoadAssetAsync<GameObject>("Ключ_Ассета").Completed +=
(handle) =>
{
Instantiate(handle.Result);
};

// Выгрузка (обязательно!)
Addressables.Release(handle);

Важно!
• Всегда выгружай ненужные ассеты через Release()
• Группируй ассеты в Addressables Groups (например: "UI", "Уровни")
• Используй Analyze Tool для поиска ошибок зависимостей
• Для сцен: Addressables.LoadSceneAsync("Scene_Key")

💡 Применяй для: DLC, загрузки HD-текстур, управления памятью в мобильных играх.
Тестируй в Play Mode с профилем "Use Existing Build".

#Unity #Addressables #GameDev #Optimization
🔥41
Если админ говорит что напишет пост, то он его напишет! Не надо напоминать ему это каждый год!
8
Я создал канал, где буду писать про разработку игр.
Кому интересно вот ссылка https://t.me/AkrusDnevnik
Посты там красиво оформляться не будут
🤯43🔥1
gpt не хватает🤓
Please open Telegram to view this post
VIEW IN TELEGRAM
8
⚡️Собрал ТОП-5 самых полезных горячих клавиш в Visual Studio, которыми пользуюсь сам.

Сохрани — экономит куча времени:

1️⃣ Alt + ↑ / ↓

💡Передвигает строку (или выделенные строки) вверх/вниз! Можно быстро менять порядок кода без копипаста.

2️⃣ Ctrl + K, D

💡 Выравнивает весь код в файле! (Форматирование). Прощай, ручное выравнивание!

3️⃣ Ctrl + K, C

💡Комментирует все выделенные строки. Полезно для тестов или дебага.

4️⃣ Ctrl + K, U

💡Раскомментирует все выделенные строки. Включить код обратно.

5️⃣ Ctrl + R, R

💡 Переименование переменной, метода или класса везде, где оно используется! Безопасный рефакторинг.


🔔 Подпишись, чтобы не пропустить!

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
92😁22
главное брать не из вопроса👍
Please open Telegram to view this post
VIEW IN TELEGRAM
😁62
Unity: Sprite Mode Multiple - Разрезаем спрайт-листы!

Зачем это?
Когда импортируешь изображение со множеством спрайтов (анимации, тайлы) — выбери 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
🔥 РОЗЫГРЫШ ИСХОДНИКА UNITY: MINECRAFT SANDBOX! 🔥
Привет геймдев-энтузиасты! 🎮 У нас горячий подарок для тех, кто хочет заглянуть под капот крутого проекта: разыгрываем полный исходник Minecraft Sandbox на Unity!

🤩 Что внутри?
🟢 Готовый sandbox

🟢Адаптивный UI в стиле Minecraft

🟢Оптимизированный код на C#

💎 Ассеты + настройки сцен

🎆 Игра полностью адаптирована под яндекс игры, подключена реклама
Ссылка

Идеально для:
🟣 Новичков в Unity (разбор рабочих механик!)
🟣 Портфолио (добавьте крутой проект!)

👑 Как выиграть:

Подписаться на Akrus Games ❤️

Нажать кнопку "Участвовать"

⚠️ Сроки:
До 20 августа 2025! Победителя выберем рандомом, результат закрепим тут.
Победитель один!

#розыгрыш #unity3d #gamedev #исходники #minecraft #кликер #AkrusGames #программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥3😁1🎄111
Unity ECS & Jobs System: революция производительности

Что это?
Архитектура, где данные хранятся отдельно от логики (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
Shader Graph: создание материалов без кода

Что это?
Визуальный редактор для написания шейдеров. Собираешь нодами, как в редакторе материалов.

Зачем?
- Быстрая итерация: видишь результат в реальном времени
- Не нужно знать 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
😂
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1132
Custom Editor Tools: ускорь 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
🔥811