C# Ready | Unity
10.6K subscribers
1.51K photos
84 videos
755 links
Авторский канал по разработке на C# и Unity.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Cотрудничество: @energy_c

Реклама на бирже: https://telega.in/channels/csharp_ready/card

РКН: https://clck.ru/3SBaT3
Download Telegram
📱 Input System: одно действие — любое устройство!

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

В этом гайде:

• Экономим время на настройку разных кнопок сразу;

•
Упрощаем добавление новых контроллеров без переработки логики;

• Делаем игру доступной широкому числу игроков мгновенно.


Попробуй новую систему ввода, и твой проект сразу станет гибче, чище и дружелюбнее к игрокам.

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36🤝12❤8👍5
Лайфхак для target-typed new!

С C# 9 вы можете упростить создание объектов, позволяя компилятору выводить тип из контекста:
List<string> names = new() { "Alice", "Bob", "Charlie" };
Dictionary<int, string> map = new()
{
[1] = "One",
[2] = "Two"
};


В этом блоке мы создаём коллекции: список строк и словарь, при этом тип объектов не дублируется в правой части:
void PrintPerson(Person p) => Console.WriteLine(p.Name);

PrintPerson(new("Иван"));


Здесь показывается передача нового объекта в метод. Компилятор понимает, что new("Иван") создаёт Person:
class Person
{
public string Name { get; }
public Person(string name) => Name = name;
}


🔥 Определение класса остаётся обычным — конструктор сохраняет имя, а дальше вы можете использовать new("…") там, где ожидается Person.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤6👍3🤝1
👩‍💻 Когда консоль превращается в игровое поле!

В простом окне терминала рождается динамика стратегии — всего девять клеток, но достаточно, чтобы почувствовать азарт и победу в чистом виде.

В этой задаче:

• Показывает, как из обычного ввода сделать живую механику;

• Учит коду реагировать на игрока, как на событие;

• Демонстрирует, что даже консоль может быть интерактивной.


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

➡️ C# Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥11👍5🤝3
Как работать с многострочными строками без «+» и «\n»?

При вставке длинных SQL, JSON или других текстовых фрагментов код засоряется экранированием и конкатенациями, из-за чего теряется читаемость и становится сложнее вносить правки.

До C# 11 приходилось писать так:
var sql = "SELECT Id, Name\n" +
"FROM Users\n" +
"WHERE Name LIKE '%Иван%'";


С C# 11 можно использовать raw-строки:
var sql = """
SELECT Id, Name
FROM Users
WHERE Name LIKE '%Иван%'
""";


🔥 Это позволяет вставлять SQL, JSON, XML и любые другие большие тексты без экранирования и конкатенаций — код чище и понятнее.

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥8❤7
👩‍💻 Погружаемся в мир глобализации с CultureInfo!

В этой шпаргалке вы узнаете, как грамотно управлять культурными настройками приложения: менять формат дат и чисел под привычки пользователя, использовать инвариантные форматы для надёжной сериализации, обращаться к кешированным объектам по коду языка и на лету адаптировать шаблоны вывода

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤5🤝5👍2
Эффективная отмена операций с CancellationToken!

Часто нужно прерывать долгие операции по таймауту или по внешнему сигналу — как сделать это просто и гибко?

Сначала создаём источник с таймаутом:
var ctsTimeout = new CancellationTokenSource();
ctsTimeout.CancelAfter(TimeSpan.FromSeconds(5));
var timeoutToken = ctsTimeout.Token;


Далее связываем таймаутный токен с внешним и передаём в асинхронный метод:
var ctsExternal = new CancellationTokenSource();
using var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(
timeoutToken, ctsExternal.Token);
await SomeLongOperationAsync(linkedCts.Token);


🔥 Главное — комбинируйте таймауты и внешние токены для гибкой и надёжной отмены операций.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍7🔥4
👩‍💻 Когда await спасает интерфейс от немого зависания?

Асинхронность — это не просто техника ускорения, а способ сохранить живость интерфейса. Правильное использование await делает взаимодействие с приложением плавным, отзывчивым и естественным для пользователя.

В этом гайде:
• Помогаем коду “дышать” без остановки и ожидания

• Делаем действия пользователя мгновенно ощущаемыми и живыми

•
Учимся писать обработчики, которые не тормозят весь поток


Асинхронный код — это про комфорт: интерфейс работает, пока программа думает.

➡️ C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍10❤4🤝2😁1