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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
⚡️ Unity: шпаргалка по Input

Сохрани, чтобы управление в твоей игре всегда работало чётко! Два основных подхода — старый и новый.

1️⃣ Классический Input Manager (Input.GetKey)

Старый добрый способ, который все знают. Идеален для быстрого прототипа.

// Движение
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");

// Прыжок
if (Input.GetKeyDown(KeyCode.Space))
{
Jump();
}

// ЛКМ
if (Input.GetMouseButtonDown(0))
{
Shoot();
}

Быстро и понятно
Жёстко зашито в коде, сложно переключать схемы управления

2️⃣ Новая система Input System (Unity Package)

Мощный и гибкий инструмент. Нужно поставить через Package Manager.

📌 Сначала настрой Input Actions:
• Создай Action Map (например, "Player")
• Добавь Actions ("Move", "Jump", "Fire")
• Назначь кнопки (WASD, Space, Mouse)

using UnityEngine.InputSystem;

// Чтение вектора движения
private void OnMove(InputValue value)
{
Vector2 moveInput = value.Get<Vector2>();
// перемещаем объект
}

// Обработка одиночного нажатия
private void OnJump(InputValue value)
{
if (value.isPressed) Jump();
}

Переключаемые схемы управления (геймпад, клавиатура)
Автоматическая ремаппинг кнопок
Нужно время на настройку

🔥 Важно:
• Для нового Input System не забудь PlayerInput компонент на объект
• В Build Settings → Player → Active Input Handling выбери "Both"

💬 Какую систему используешь ты? Классику или новую?
🔔 Подпишись — впереди ещё много шпаргалок по Unity и C#!

👉Akrus Games | Unity
🔥116
ИИ
Если бы не было чатагпт, не было таких цен на оперативную память, скорость работы программирования не возросла, не было бы этого канала.
Большинство из вас использует ИИ. Я в том числе.
Однако у ИИ есть проблема — он любит фантазировать, очень много фантазировать. Чтобы этого избежать, нужна правильная структура запроса.
Вот вам полезный промт, который убирает лишнюю "фантазию" ИИ:
Прежде чем дать мне ответ, оцени его
неопределённость. Если она больше, чем 0.1 — задавай
мне уточняющие вопросы до тех пор, пока
неопределённость будет 0.1 или меньше


Чтобы составить свой промт, надо:
1. Объяснить что ты делаешь
2. Что ты уже сделал
3. Объяснить, что должен сделать ИИ
4. Добавить примеры по возможности.

Используя эти 4 пункта и промт, можно достать максимум из ИИ
8🔥1
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь!


Присылайте лучше видео. Хороший компрессор https://tools.rotato.app/compress, если не грузит используйте https://github.com/codeforreal1/compressO

Для новеньких поясняю: по сути это бесплатная реклама вашей игры и канала, только если у вас реально крутая игра)


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

🎧Akrus Games | Unity
5🔥2🎄1
This media is not supported in your browser
VIEW IN TELEGRAM
Игра подписчика @Lenya418
С января я делал Roguelike игру и сейчас могу поделиться прогрессом

Сейчас в игре:
•100+ скриптов
•10+ уникальных оружий
•20+ уникальных пуль для них
•15+ уникальных эффектов которые можно комбинировать между собой
•5+ бонусов
•Система генерации комнат
•Механика бомб
•Система волн с разными паттернами

Канал: https://t.me/StarGamesOne
Присылайте свои игры сюда
Akrus Games | Unity
👍131🎄1
Игра подписчика @pingalinux
Моя игра марбл судоку💎
Выпустила 2 недели назад и радуюсь
Уже более 3к скачиваний и несколько сотен активных игроков в день
В игре множество режимов, а также есть ачивки, лидерборд и ивенты🐈
Сейчас тружусь над уведомлениями

Канал: @LumaPlayUG
Игра: Плей маркет игры
Присылайте свои игры сюда
Akrus Games | Unity
🔥73👍2
Возможно, у кого-то есть старый аккаунт Google Play Разработчика (любого года).

Есть возможность хорошо заработать на этом.

Закрытые за неактив аккаунты тоже принимаются(помогу бесплатно восстановить)

По любым вопросам в ЛС @Ilya01s.
🔥5
Media is too big
VIEW IN TELEGRAM
Игра подписчика @blackdragon3129
Мой проект: Wall Walker - головоломка, где изменение гравитации стало ключевой механикой. В нём тебя ждёт:
⚙️ Множество разнообразных механик (помимо изменения гравитации)
🎨 Приятный глазу визуальный стиль
🗺 Куча уникальных уровней


Игра уже на финишной прямой, скоро релиз.

Канал: t.me/dragodev3129
Присылайте свои игры сюда
Akrus Games | Unity
🔥6
ART DOGS

Мы оформляем Steam-страницы для инди-проектов. Помогаем с капсулой, визуалом и упаковкой, чтобы игра выглядела профессионально с первого взгляда.


Что делаем:
— Полный комплект капсул для магазина и библиотеки Steam;
— Оформление фона страницы;
— Разработка логотипов;
— Геймплейные трейлеры;
— Короткие видео (Shorts, Reels, TikTok);
— Текстовое описание, гифки, скриншоты для страницы;
— Ачивки и трейд-карточки;
— Консультации по стилю, геймплею, позиционированию и оформлению;
— Тестирование проектов;
— Любое промо по договорённости;

Формат работы:
Можем выполнить задачи сдельно (по договору) или стать частью команды в формате внутренней студии.

📁 Канал с работами: https://t.me/ART_DOGS_STEAM_DESIGN

📁 Канал с отзывами: https://t.me/OTZIVARTDOGS
8👍2🔥2
⚡️ Два подхода к организации кода в Unity

Сохрани, чтобы не наступить на грабли новичка и не запутаться в собственном проекте.

Плюсы разделения скриптов:

🔹 Переиспользуемость кода
PlayerMovement, EnemyAI, Inventory — каждый скрипт делает одно дело. Можно брать готовый Movement и использовать в разных объектах.

🔹 Проще тестировать и исправлять
Нашел баг в прыжке? Открываешь только PlayerJump.cs. Не нужно копаться в 1000+ строках монолита.

🔹 Чистая архитектура
Легче расширять: добавил новый скрипт — новая механика готова. Не ломаешь существующий код.

Минусы чрезмерного разделения:

🔸 Сложность управления
10+ скриптов на одном объекте? Придется настраивать связи между ними через GetComponent<> или события.

🔸 Потеря производительности
Частые вызовы GetComponent<> и межскриптовые события могут тормозить, особенно на мобильных устройствах.

🔸 "Ад зависимостей"
Скрипт А зависит от Б, Б от В, В от А... Запутал сам себя.

💡 Золотая середина:

1️⃣ Разделяй по ответственности
Движение → отдельный скрипт
Стрельба → отдельный скрипт
Здоровье → отдельный скрипт

2️⃣ Но не дроби без нужды
Не создавай 10 скриптов для 10 кнопок. Логика UI может жить в одном скрипте.

3️⃣ Используй компонентный подход Unity
Это его философия! Каждый скрипт — компонент с конкретной задачей.

📌 Вывод: разделяй логично, но не фанатично. 3-5 скриптов лучше 15 и лучше 1 монстра на 2000 строк.

💬 А как ты организуешь код? Пиши в комментах!
🔔 Подпишись — еще больше про архитектуру, C# и юнити-лайфхаки.

👉Akrus Games | Unity
🔥101👍1
⚡️ Unity: Интерфейсы в C# — сила контрактов

Интерфейс — это контракт, который гарантирует, что класс умеет делать определённые действия. Неважно, кто его подписал — игрок, враг или бочка. Главное — они все могут выполнить условия контракта.
В интерфейсах в 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
🔥76👍1
⚡️ 5 C# фишек, которые прокачают твой 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
🔥7👍21
Forwarded from REPUBLIC78
Открыта регистрация на участие в 9-ом сезоне федеральной программы развития молодежного предпринимательства "Я В ДЕЛЕ" в Санкт-Петербурге.

Наша команда основала проект Republic для того чтобы помочь командам в сфере креативных индустрий развить свой продукт.

💬 Из основного, что мы предоставляем всем желающим:
🟢Предпринимательский курс для разработчиков игр, состоящий из 8 блоков.
🟢Практика выступления перед экспертами в бизнесе.
🟢Личный наставник, который будет вам помогать.
🟢Призовой фонд "Я В ДЕЛЕ" — 1 000 000 рублей.
🟢Летний интенсив по работе с издательствами.
🟢Шоу-кейсы на региональном уровне.

🤩 Для кого?
🟢Для студентов от 18 лет проживающих в Петербурге/ЛО.
🟢Для тех, кто ищет команду или нет проекта.
🟢Для инди-команд с техно-демкой или полноценным проектом.

⌚️ Таймлайн
🟢21 марта — Открытие
🟢Апрель — Хакатон (аккредитация проекта) и шоу-кейсы.
🟢Май — финальная защита перед жюри и закрытие 9 сезона.
🟢Июнь-Август — Летний интенсив по работе с издательствами.


➡️ Для участия в конкурсе хватит идеи проекта, так что ждем всех желающих. Оставляйте заявку в форме

❗️РЕГИСТРАЦИЯ ДО 20 МАРТА.

По всем вопросам пишите: @Oleg_Leyfman
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32
Forwarded from Akrus Games | Unity (卂Ҝ尺ㄩ丂)
⚡️ 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
7🔥1