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

Сотрудничество/реклама/помощь @Akrus001
Download Telegram
Что выведет этот код?
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
⚡️ 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
Please open Telegram to view this post
VIEW IN TELEGRAM
7321
IEnumerable<int> Numbers()
{
Console.WriteLine("Start");
yield return 1;
Console.WriteLine("Middle");
yield return 2;
Console.WriteLine("End");
}

foreach (var num in Numbers().Take(1))
{
Console.WriteLine(num);
}
Что выведет код?
Anonymous Quiz
29%
Start 1 Middle 2 End
20%
Start 1 Middle
39%
Start 1
11%
1 2
Forwarded from DevKit Unity
🎉 Розыгрыш сразу 3 исходников🎉

Так как розыгрыш исходника «Симулятор магазина» немного задерживается, мы совместно с каналом Unity Free Projects решили порадовать вас и разыграть сразу три других крутых проекта! 🔥

📅 Итоги через 3 дня в 15:00 по МСК
🏆 3 призовых места

Условия участия:
1️⃣ Подписаться на каналы:
👉 @DevkitUnity
👉 @Unity_free_projects

🚀 Участвуй и получи один из трёх топовых Unity-проектов!
🍀 Всем удачи!
53321
var numbers = new List<int> { 1, 2, 3 };
var query = numbers.Where(n => n > 1);

numbers.Add(4);

foreach (var n in query)
Console.Write(n + " ");
1
653
readonly struct Point
{
public int X { get; }

public Point(int x) => X = x;

public void Mutate()
{
Console.WriteLine(X + 1);
}
}

var p = new Point(5);
p.Mutate();
Вы изучаете python?
Anonymous Poll
63%
нет 👎
29%
да 👍
8%
что это? 🤔
🔥1
list_ = []
for i in range(10):
list_.append("8")
print(len(list_))
111
Что произойдет?
Anonymous Quiz
46%
10
25%
8
6%
9
23%
не знаю питон :(
43🔥21
4🔥32
Akrus Games | Unity
Какой хотите следующий пост?
Набираем 50 голосов и выкладываем пост.

P.S: накидайте сюда 20 🔥
🔥187😁3