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

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

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

РКН: https://clck.ru/3SBaT3
Download Telegram
📱 Разбираем DrawMeshInstanced — быстрый рендер тысяч одинаковых объектов!

Он позволяет отрисовать до 1023 копии меша за один вызов без лишних объектов и Update'ов.

Что важно знать:

• Один вызов отрисовывает сразу сотни копий меша;

• Не создаёт объектов и не тратит ресурсы CPU;

• Позволяет задавать цвет, масштаб и позицию каждой копии.


Идеально для метели, толп, листвы и эффектов.

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31❤6👍4
Копируем только нужные файлы — быстро и удобно!

Нужно забрать только .jpg, .csv или любые другие файлы из папки? Не перебираем вручную — всё делаем в пару строк на C#.

Указываем директории и фильтр по расширению:
string sourceDir = @"C:\Data\Images";
string destDir = @"C:\Backup\Images";
string extension = ".jpg";


Теперь находим и копируем только нужные файлы:
foreach (var file in Directory.GetFiles(sourceDir))
{
if (Path.GetExtension(file).Equals(extension, StringComparison.OrdinalIgnoreCase))
{
var destFile = Path.Combine(destDir, Path.GetFileName(file));
File.Copy(file, destFile, overwrite: true);
}
}


🔥 Получаем копию всех .jpg (или любых других) из каталога — идеально для бэкапа, фильтрации или миграции данных.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20👍7🔥5
Поиск текста во всех файлах папки!

Нужно найти слово или строку в десятках файлов? Например, проверить, где используется "connectionString" в .cs, .json или других файлах.

Укажем путь к папке и ключевое слово:
string folderPath = @"C:\Projects\Config";
string searchTerm = "connectionString";


Теперь пробегаем все файлы и ищем совпадения:
foreach (var file in Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories))
{
string content = File.ReadAllText(file);
if (content.Contains(searchTerm, StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine($"Найдено в: {file}");
}}


🔥 Работает с любыми типами файлов — от .cs и .json до .txt. Можно адаптировать под поиск по маске (*.log) или включить регулярные выражения.

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

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

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26❤5👍5🤝1
Что же выведет консоль?
Anonymous Quiz
37%
A
33%
B
17%
C
13%
D
❤6👍4🔥1
👩‍💻 Кортежи без классов и аллокаций!

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

Что важно знать:

• Упрощает возврат значений;

•
Работает с LINQ;

•
Имеет имена полей.


Это помогает возвращать сразу несколько значений — без классов, аллокаций и Item1.

➡ C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍11🤝7❤3
C# Ready | Unity pinned «👋🏼 Приветствую в C# Ready! C# — современный, мощный и элегантный язык программирования от Microsoft. Он объединяет в себе простоту, безопасность и гибкость, позволяя создавать всё. Это авторский ✈️ канал, который поможет вам изучить C# с нуля и глубже понять…»
ValueTask vs Task — когда можно обойтись без лишних аллокаций!

Иногда асинхронный метод чаще всего завершается синхронно, а возвращая Task, мы платим за каждую аллокацию объекта-представителя:
// «До»: всегда возвращаем Task, даже если результат готов сразу
public async Task<int> GetCountAsync()
{
if (cache.TryGetValue("count", out var value))
return value;
var fresh = await LoadCountFromDbAsync();
cache["count"] = fresh;
return fresh;
}


Если кэш почти всегда заполнен, каждый вызов создаёт лишний Task-объект:
// «После»: возвращаем ValueTask при готовом результате
public ValueTask<int> GetCountAsync()
{
if (cache.TryGetValue("count", out var value))
return new ValueTask<int>(value); // без аллокации state-machine
return new ValueTask<int>(LoadCountFromDbAsync());
}


При cache hit мы сразу упаковываем значение в ValueTask<int>, не создавая асинхронной машины состояний.

При «промахе» возвращаем ValueTask, обёрнутый вокруг реального Task.

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

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6🔥3
📱 Async/await против корутин в Unity!

Кратко сравниваем задачи C# и корутины Unity, показывая, где каждая техника эффективнее в реальных сценариях.

Что важно знать:

• Ошибки ловятся сразу;

•
Отмена делается просто;

•
Изображение остаётся плавным.


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

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍6❤4🤝3