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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
int a = 5;
int b = a;
b += 2;
Debug.Log(a);
ЧТО ВЫВЕДЕТСЯ В КОНСОЛЬ?
Anonymous Quiz
25%
7
62%
5
2%
0
11%
Ошибка компиляции
🔁 Что такое ref и out в C#?

Сохрани — пригодится в любом проекте!

ref — позволяет передать переменную по ссылке и изменить её значение внутри метода.
🔸 Главное: переменная должна быть инициализирована до передачи.

void AddFive(ref int number)
{
number += 5;
}

int x = 10;
AddFive(ref x);
Debug.Log(x); // 👉 выведет 15


out — тоже передаёт по ссылке, но переменная может быть не инициализирована до вызова.
🔸 Главное: метод обязан присвоить значение переменной до выхода.

void GetAnswer(out int result)
{
result = 42;
}

int answer;
GetAnswer(out answer);
Debug.Log(answer); // 👉 выведет 42


🧠 ref vs out — в чём разница?
• ref: переменная уже есть — хочешь изменить её внутри метода
• out: переменной ещё нет — хочешь создать её и вернуть результат

💡 Пример из реальной жизни:

if (int.TryParse("123", out int number))
{
Debug.Log(number); // 👉 123
}


Метод TryParse использует out, чтобы вернуть значение только если операция прошла успешно.

📌 Сохрани — пригодится в любом проекте
🔔 Подпишись на канал, чтобы не пропускать полезные посты по Unity и C#

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥322
int a = 3;
int b = 4;
int result = a + b * 2;

Debug.Log(result);
Что выведет код?
Anonymous Quiz
27%
14
68%
11
1%
16
4%
7
4🤯22😱1
⚡️ 5 сайтов, где ты реально прокачаешь программирование

Сохрани — пригодится на старте, перед собеседованиями и для ежедневной практики!
Подходит и для C#, и для Unity-разработчиков, которым нужно прокачать алгоритмическое мышление

1️⃣ Codewars

🎯 Решай задачи разного уровня сложности: от новичка до ниндзя
Изучи чужие решения — как бесплатные шпаргалки
Поддерживает C#, JavaScript, Python и многие другие

2️⃣ LeetCode

💼 Алгоритмы и структуры данных, прокачка для собеседований
Часто встречаются задачи, похожие на реальные интервью в топ-компаниях
Есть поддержка C#, Java, Python и др.

3️⃣ Project Euler

🧮 Математические и логические головоломки
Развивает аналитическое мышление и чистое решение в коде
Особенно полезен, если хочешь писать «чисто и красиво» даже в Unity

4️⃣ Exercism

👨‍🏫 Пошаговая практика по языкам — включая C#
Каждая задача сопровождается фидбеком от менторов
Простой интерфейс, хорош для системной прокачки

5️⃣ Codeforces

⚔️ Самая активная соревновательная платформа по алгоритмам
Регулярные турниры, рейтинги, реальные челленджи
Поддерживает C#, C++, Python — отличная тренировка логики и скорости

😵 Практикуй хотя бы по 1 задаче в день, и уже через месяц заметишь результат!
📌 Сохрани, чтобы не искать заново
🔔 Подпишись на канал, чтобы не пропустить топовые ресурсы и фишки по C# и Unity
💬 А где прокачиваешься ты? Делись в комментариях!

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
522🔥11
Всем привет!

Хочу порекомендовать канал моего знакомого — Timm Studio! На этом канале вы можете наблюдать за процессом создания игр, поддерживать его и следить за его контентом. На этом канале будет выходить много интересного контента, а также чтобы вы могли сразу увидеть его работы, я скину пару примеров! в общем если вам интересно , ПОДПИСЫВАЙТЕСЬ
https://t.me/ITimGameStudio <<<
1🔥61😱111
⚡️ 5 приёмов, которые делают твой код чище

Сохрани — чтобы писать как PRO 🧼

1️⃣ Именуй функции как действия

MovePlayer(), SaveData() — названия должны описывать то, что делает функция. Это сразу видно без чтения тела метода.

2️⃣ Избавляйся от магических чисел

if (health < 30)
if (health < lowHealthThreshold)

➡️ Используй константы или переменные с понятными именами — это повышает читаемость и упрощает поддержку.

3️⃣ Одна ответственность — один скрипт / компонент

Всё в одном Player.cs
PlayerMovement.cs, PlayerShooting.cs, PlayerUI.cs

➡️ Разделяй логику по принципу SRP — каждый класс делает только своё. Это упростит тестирование и повторное использование.

4️⃣ Избавляйся от дублирования

Если ты пишешь одинаковый код более 2 раз — вынеси его в отдельный метод.
Чистота = переиспользуемость.

5️⃣ Комментируй то, что не очевидно

// Увеличиваем счёт
// Начисляем очки за попадание в голову

➡️ Комментарий должен объяснять почему, а не что и так видно из кода.

📌 Пиши так, чтобы код был понятен тебе через 3 месяца
💬 А ты комментируешь свой код? Напиши честно
🔔 Подпишись, чтобы прокачивать C# и Unity до уровня senior

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
7321🔥11
⚡️ 5 полезных приёмов в C# и Unity, которые экономят часы отладки

Сохрани — пригодится даже опытным разработчикам.

1️⃣ nameof() — безопасные строки

Debug.Log(nameof(Player)); // "Player"


🔸 Помогает избежать опечаток и ломания при рефакторинге. Работает с классами, методами, переменными.

2️⃣ [ContextMenu] — кнопка прямо в инспекторе

[ContextMenu("Reset Settings")]
private void ResetSettings() {
// Применяется без запуска игры
}


🛠 Работает только в MonoBehaviour, не поддерживает static. Удобно для генерации данных, сбросов, ручного теста.

3️⃣ TryGetComponent<T>() — безопасно и чисто

if (TryGetComponent<Rigidbody>(out var rb)) {
rb.AddForce(Vector3.up * 10);
}


🚀 Безопаснее GetComponent<T>() != null. Избегает двойного поиска и чище читается. С Unity 2020.1+

4️⃣ [System.Flags] — для комбинируемых enum’ов

[System.Flags]
public enum WeaponType {
None = 0,
Sword = 1,
Bow = 2,
Magic = 4
}

// Пример использования:
var myWeapon = WeaponType.Sword | WeaponType.Magic;
if ((myWeapon & WeaponType.Magic) != 0) {
Debug.Log("Magic enabled");
}


💡 Удобно для фильтров, состояний, прав. Избегайте HasFlag — он медленнее.

5️⃣ OnValidate() — авто-валидация в редакторе

void OnValidate() {
damage = Mathf.Max(0, damage);
}


🧪 Вызывается при изменении полей в инспекторе. Удобно для базовой валидации и UI-обновлений. Не перегружайте тяжёлыми операциями.

📌 Подписывайся, если хочешь писать понятный, надёжный код в Unity и C#
💬 Используешь что-то из этого? Делись опытом 👇

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52211
int a = 10;
int b = 5;
int result = a > b ? a - b : b - a;

Debug.Log(result);
Forwarded from Akrus Games | Unity (Egor)
Что выведет этот код?
Anonymous Quiz
52%
5
12%
-5
15%
True
21%
Ошибка компиляции
4🤯3
⚡️ 5 приёмов C# и Unity, которые делают код мощнее и чище

📌 Сохрани — пригодятся даже в продакшене

1️⃣ ??= — установка значения по умолчанию

playerName ??= "Guest";


🔧 Если playerName — null, присваивается “Guest”.
Чище, чем обычная проверка.
💡 Работает с ссылочными и nullable типами (C# 8.0+).

2️⃣ Application.isPlaying — защита от логики в редакторе

void Update() {
if (!Application.isPlaying) return;
// Работает только в Play Mode
}


⚙️ Избегай выполнения лишнего в редакторе.
Полезно в Update, OnValidate, Awake, Start, корутинах и редакторских скриптах.

3️⃣ [MenuItem] с горячей клавишей

[MenuItem("Tools/Quick Play _F5")]
private static void QuickPlay() {
EditorApplication.isPlaying = !EditorApplication.isPlaying;
}


💡 Создай свои тулзы с быстрым доступом.
Поддерживает комбинации: Ctrl+Shift+R (Windows).

4️⃣ readonly struct — максимум производительности

public readonly struct DamageInfo {
public readonly int Value;
public readonly Vector3 Direction;
}


Без лишних аллокаций, идеально для ECS, Burst, инвариантных данных.
💬 В обычных MonoBehaviour-скриптах не всегда критично.

5️⃣ [Header], [Range], [Tooltip] — читаемый инспектор

[Header("Настройки урона")]
[Range(0, 100)] public int damage;
[Tooltip("Урон по зоне — например, огонь или яд")]
public bool isArea;


🧼 Повышает читаемость инспектора.
Меньше вопросов от команды → меньше багов.
💡 Добавь ещё [Space] для разделения блоков.

🔔 Подписывайся, если хочешь писать Unity-код как профи
💬 А ты используешь это у себя? Делись в комментах 👇

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3211
string text = null;
Debug.Log(text == null ? "Null" : text.ToUpper());
😁3
Что выведет этот код?
Anonymous Quiz
18%
NULL
52%
Null
12%
null
18%
Ошибка выполнения
Хотите получать информацию о разработке игр? Или же только лайфхаки?
Anonymous Poll
22%
ЛАЙФХАКИ🗡
24%
ИГРЫ💰
54%
и то и другое🎧
433
⚡️ 5 приёмов в C# и Unity, которые предотвращают баги до их появления

📌 Сохрани — пригодится в продакшене, архитектуре и при работе в команде

1️⃣ [SerializeReference] — сериализуемые интерфейсы и абстракции

[SerializeReference]
public IWeapon weapon;

🔧 Позволяет задавать в инспекторе объекты, реализующие интерфейс или базовый класс
💡 Работает с System.Serializable классами, начиная с Unity 2020+
⚠️ Не работает с MonoBehaviour. Нужно использовать ManagedReferenceResolver для удобного выбора объектов.

2️⃣ .asmdef — ускорь сборку проекта и раздели модули

🧩 Делим код на логические сборки: Core, UI, Tools, Editor
Unity пересобирает только изменённые .asmdef, а не весь проект
🔐 Изоляция editor-кода от runtime, контроль зависимостей и unit-тестов

3️⃣ CustomYieldInstruction — читаемые и гибкие паузы в корутинах

public class WaitForHealth : CustomYieldInstruction {
public override bool keepWaiting => Player.Health < 50;
}

// Использование
yield return new WaitForHealth();


🧠 Заменяет while() и вложенные корутины
Удобно для загрузок, триггеров, ожидания событий без сложной логики

4️⃣ ScriptableObject как конфигурация — без копипаста

[CreateAssetMenu]
public class WeaponData : ScriptableObject {
public int damage;
public float range;
}


📦 Расшаривай данные между объектами, сценами и компонентами
🎯 Без GetComponent, без дубликатов — идеально для дизайнеров
💡 Упрощает тестирование и масштабирование

5️⃣ [InitializeOnLoadMethod] — контроль при перезагрузке редактора

[InitializeOnLoadMethod]
private static void OnReload() {
Debug.Log("Editor reloaded");
}


🔁 Сохраняй/восстанавливай состояние редактора, кеши, настройки
🔥 Полезно для плагинов, тулов, Editor-only логики
⚠️ Метод должен быть static. Альтернатива — EditorApplication.playModeStateChanged

🔔 Подписывайся, чтобы не пропустить техники, которые экономят дни разработки
💬 Что используешь из этого? Делись опытом в комментариях!

👉Akrus Games | Unity
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥44
⚡️ Хочешь разобраться в C# и не путаться в делегатах, LINQ и async/await?

📘 Metanit — один из самых понятных и полных гидов по C# — идеально для Unity-разработчиков.

Он простым языком объясняет даже сложные темы, постоянно обновляется (уже есть материалы по C# 12) и отлично работает как учебник, так и как справочник.

🔥Чёткая структура помогает быстро находить нужные темы — от ООП и коллекций до паттернов проектирования. Особенно полезен Unity-разработчикам: можно легко прокачать понимание делегатов, async/await для работы с API и классических паттернов вроде Singleton или State.

🔗 Смотри сам: ссылка

🔔 Подпишись — делюсь только тем, что реально экономит время и нервы

👉Akrus Games | Unity

#unity #csharp #программирование #gamedev #советы
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥11
🎯 Цель — 200 подписчиков!

Друзья, как только наш канал набирает 200 подписчиков, я выпускаю Telegram-бота, который будет вашим карманным помощником по Unity и C#!

💡 В боте вы найдёте:
— Самые полезные фишки по Unity
— Советы по C#
— Подборки курсов, книг и видео
— Шпаргалки и практика

👨‍💻 Всё собрано и удобно структурировано — чтобы учиться и развиваться было проще!

📲 Делитесь каналом с друзьями — и бот не заставит себя ждать.
Погнали к цели! 🚀

👉Akrus Games | Unity

#unity #csharp #telegramбот #gamedev #программирование
Please open Telegram to view this post
VIEW IN TELEGRAM
42
public record Player(string Name, int Score);

var p1 = new Player("Alex", 10);
var p2 = new Player("Alex", 10);

Console.WriteLine(p1 == p2);
3