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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
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
This media is not supported in your browser
VIEW IN TELEGRAM
Собираем GAMEDEV-комьюнити 🚨 +бонус

Настоящие результаты приходят, когда сильное комьюнити объединяется, делится опытом и помогает друг другу расти.


APOLLO MONETIZATION прямое тому подтверждение: всего за полгода доход наших клиентов вырос в 2 раза.

Именно поэтому мы решили построить экосистему для разработчиков.

Эксклюзивно
для участников чата мы регулярно проводим:
➡️ Мастер-классы с ведущими экспертами индустрии с интерактивом с аудиторией.
➡️ Q&A сессии по вашим самым актуальным запросам, где каждый вопрос найдет исчерпывающий ответ.
➡️ Бесплатные марафоны по масштабированию проектов.

Спойлер: прямо сейчас готовим коллаб с одной крупной мобильной площадкой, на днях анонс 🤫

Если ты создаешь игры или мобильные приложения — это твой левел-ап в монетизации.

🎁БОНУС: для всех участников чата БЕСПЛАТНЫЙ индивидуальный аудит проекта от экспертов (подробности в закрепе чата)!

🅰️ Присоединяйся к комьюнити: t.me/gamedev_monetization
🔥41
Присылайте свои работы в комментарии!👊
Лучшие выложу здесь через 24 часа!


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

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


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

🎧Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
41🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Игра подписчика @sollner
Продолжаю делать десктоп-айдлер игру. Закончил с шейдером, наконец выглядит именно так, я хотел. Начал делать машину состояний. В скором времени будут появляться путники и приносить свои истории.
Сейчас проект переехал на годот, так как он лучше работает с рабочим столом и "виджет"-стилем

Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
👍74🔥3
Игра работа подписчика @ryadevn
лопата самая убогая
а топор уже немного получше
ух, последний раз кидал свои работы год назад

Канал: а где
Присылайте свои игры сюда
Akrus Games | Unity
65🎄3
Игра работа подписчика @MounSword_Gtima
Внешне я конечно шут, но в душе король!
Терентий @Автор: Акрус

🏵 ОБ ИВЕНТЕ 🏵

Всем хорошей и приятной недели!

Канал: https://t.me/MSwordStudio
Присылайте свои игры сюда
Akrus Games | Unity
6😁3👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Игра подписчика @viseweb
Drone Battles!

В игре вы управляете дроном, который должен остановить вторжение существ из параллельных миров, стремящихся захватить нашу вселенную.

В игре представлено множество уникальных дронов с разнообразным вооружением. Испытайте всех дронов, уничтожай врагов и эпических боссов, добывайте детали для улучшения и становитесь еще сильнее!

Игра уже доступна для регистрации в Google Play. Если вас заинтересовала игра, переходите по ссылке в маркет и жми кнопку регестрации, чтобы не пропустить её выход в релиз и сыграть одним из первых: https://play.google.com/store/apps/details?id=com.SuperAmazingStudio.DroneBattles

Группа студии: @SuperAmazingStudioRu
Канал: @SuperAmazingStudioRu
Присылайте свои игры сюда
Akrus Games | Unity
🔥843
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Загрузка сцен в Unity: красиво и без фризов

Стандартный SceneManager.LoadScene вызывает фриз — не годится для нормального проекта.
Сделаем правильно: с экраном загрузки, прогрессом и без тормозов.

Пока сцена грузится, крутим анимацию и показываем проценты.
1. Создай пустые объекты Menu и Load, меню и экран загрузки соответственно.
2. Прикрепи к ним необходимый UI


Кнопка должна запускать LoadScene()
using System.Collections;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class Play : MonoBehaviour
{
[Header("UI Elements")]
[SerializeField] private Slider progressSlider;
[SerializeField] private TextMeshProUGUI progressText;
[SerializeField] private GameObject start;
[SerializeField] private GameObject load;

// Обновляет слайдер и текст прогресса
void UpdateProgressUI(float progress)
{
progressSlider.value = progress;
progressText.text = $"{progress * 100:F0}%";
}

// Вызывается при нажатии кнопки "Играть"
public void LoadScene()
{
start.SetActive(false);
load.SetActive(true);
StartCoroutine(LoadAsync(1));
}

// Асинхронная загрузка сцены с отображением прогресса
IEnumerator LoadAsync(int sceneName)
{
AsyncOperation operation = SceneManager.LoadSceneAsync(sceneName);
operation.allowSceneActivation = false; // не переключаемся сразу

// Ждём, пока загрузка не достигнет 90%
while (operation.progress < 0.9f)
{
float progress = Mathf.Clamp01(operation.progress / 0.9f);
UpdateProgressUI(progress);
yield return null;
}

// Достигли 90% — показываем 100% и делаем паузу
UpdateProgressUI(1f);
yield return new WaitForSeconds(0.5f); // можно заменить на ожидание нажатия

// Разрешаем переход на новую сцену
operation.allowSceneActivation = true;
}
}


💡 Хитрость: operation.progress идёт до 0.9, а последние 10% — активация сцены.
Поэтому масштабируем progress / 0.9f и уже на 1.0 переводим.


💬 Как загружаешь сцены ты? Асинхронно или всё ещё грузишь синхронно и терпишь фризы?

🔔 Подписывайся — дальше разберём ECS.

Если, что про ECS я помню

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥63
🙃

Возрождение вечерних мемов 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🤯43👍3😁21
Forwarded from NOBICE (Random Beast 🏆)
Розыгрыш 5 подарков 🤪

Условия розыгрыша - подписка на каналы:

NOBICE
AkrusGames
UnStar Studio
SuperAmazingStudio
SuperAmazingStudioRu
LumaPlay


Итоги будут 28 числа 🗓
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😱22👎1
Глупи гугл не может запомнить😠

Участвуйте в розыгрыше
Please open Telegram to view this post
VIEW IN TELEGRAM
9😁6🔥3
Доброе утро, разработчики!
Всем удачной рабочей недели! 🎉
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥32
Спасибо❤️

Завтра будет пост🤪
Please open Telegram to view this post
VIEW IN TELEGRAM
126🔥4