Это пауза между кадрами. Его умножают на всё, что зависит от времени, чтобы движение, таймеры и анимации работали одинаково при любом FPS и на любых устройствах.
Ключевые моменты:
• При движении умножайте скорость на Time.deltaTime для плавности.
• Таймеры уменьшаются на значение Time.deltaTime для точного отсчёта.
• В Update() и FixedUpdate() учитывайте deltaTime и fixedDeltaTime соответственно.
Time.deltaTime делает логику предсказуемой и плавной на любых устройствах и при любом FPS.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24🤝21❤16👍4
Ищем все .txt файлы в папке на C#!
Сегодня сделаем простой, но полезный скрипт, который покажет все
Подключим нужное пространство имён:
Зададим путь к нужной папке:
И найдём в ней все файлы с расширением
Теперь выведем их на экран:
Если в папке лежат такие файлы:
notes.txt, todo.txt, draft.txt
Вывод будет:
Можно легко адаптировать под любой формат:
🔥 Уже ты умеешь автоматически находить нужные файлы в папке — это основа для сборщиков логов или любых скриптов, где надо "перебрать всё".
➡️ C# Ready | #практика
Сегодня сделаем простой, но полезный скрипт, который покажет все
.txt файлы в указанной папке. Такой приём часто используют в логерах, парсерах или утилитах для автообработки документов.Подключим нужное пространство имён:
using System;
using System.IO;
Зададим путь к нужной папке:
string folderPath = @"C:\MyFolder";
И найдём в ней все файлы с расширением
.txt:string[] files = Directory.GetFiles(folderPath, "*.txt");
Теперь выведем их на экран:
foreach (string file in files)
{
Console.WriteLine(file); // печатаем путь к каждому .txt
}
Если в папке лежат такие файлы:
notes.txt, todo.txt, draft.txt
Вывод будет:
C:\MyFolder\notes.txt
C:\MyFolder\todo.txt
C:\MyFolder\draft.txt
Можно легко адаптировать под любой формат:
*.log, *.json, *.csv — или вообще без фильтра, если нужно всё подряд.🔥 Уже ты умеешь автоматически находить нужные файлы в папке — это основа для сборщиков логов или любых скриптов, где надо "перебрать всё".
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤8🔥8🤝1
Сегодня создадим консольное приложение, которое пробегается по файлу-изображению и достаёт из него нужные EXIF-теги
В этой задаче:
• Подключаем лёгкую NuGet-библиотеку MetadataExtractor одной командой.
• Через LINQ берём DateTimeOriginal и Model, не читая весь файл в память.
• Корректно обрабатываем кадры без метаданных — GetDateTime и GetString вернут null, а приложение не упадёт.
Полученные дату и модель можно сразу использовать: переименовать файл, сохранить в БД или показать пользователю в интерфейсе.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍9🤝7❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Подборка последовательных уроков: от азов синтаксиса и принципов ООП до углублённых тем — коллекции и LINQ, асинхронность и многопоточность, обработка исключений, создание DLL-библиотек и Windows Service; детальные статьи по элементам Windows Forms и компонентам WPF
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍10🔥5
Это потокобезопасная очередь для передачи сообщений между задачами без ручных блокировок и сложной синхронизации.
Что важно знать:
• Работает без ручных блокировок и сложных синхронных вызовов.
• Позволяет автоматически замедлять отправку при перегрузке памяти.
• Обеспечивает плавную передачу данных между параллельными задачами.
Так вы получаете готовый «из коробки» механизм асинхронной очереди с естественным управлением нагрузкой без лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤7👍5🤝1
Консольное приложение, которое выводит строку каждые 30 с и отчёт раз в 5 мин
В этой задаче:
• Подключаем NuGet-пакет Quartz одной командой.
• Пишем HelloJob и ReportJob, реализующие IJob.
• Настраиваем SimpleSchedule, CronSchedule и затем ScheduleJob / Start / Shutdown.
Сообщения легко заменить логами, запросами к API или записью в БД — всё по таймеру без сложных потоков.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤11🤝8🔥7
Используйте описательные методы вместо сложных условных операторов
IFЧтение длинных и запутанных условий в IF-операторах может быть затруднительным.
Лучше всего вынести логику проверки в отдельный метод (или переменную) с понятным и выразительным именем.
Имя метода должно четко отражать суть проверки, чтобы любой разработчик мог легко понять, что происходит в коде.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍14❤10👎1
Прерываем длительные задачи с CancellationToken!
Иногда задача "зависает", и нам нужно прервать её выполнение заранее. Например, при закрытии окна, нажатии "Отмена" или по таймеру.
Раньше приходилось использовать флаги и вручную проверять отмену в каждом шаге:
Такой подход громоздкий и неудобен, особенно для асинхронных операций с ожиданием.
Сейчас используем встроенный механизм
Создаём задачу, которая будет проверять токен отмены перед каждой задержкой:
Оборачиваем выполнение в try/catch, чтобы корректно обработать отмену задачи:
🔥 Теперь ты умеешь прерывать асинхронные задачи по таймеру или по событию — удобно и безопасно.
➡️ C# Ready | #практика
Иногда задача "зависает", и нам нужно прервать её выполнение заранее. Например, при закрытии окна, нажатии "Отмена" или по таймеру.
Раньше приходилось использовать флаги и вручную проверять отмену в каждом шаге:
bool cancel = false;
if (cancel) break;
Такой подход громоздкий и неудобен, особенно для асинхронных операций с ожиданием.
Сейчас используем встроенный механизм
CancellationToken с таймером отмены и try/catch:using var cts = new CancellationTokenSource();
// отмена через 3 секунды
cts.CancelAfter(3000);
Создаём задачу, которая будет проверять токен отмены перед каждой задержкой:
await Task.Run(async () =>
{
for (int i = 1; i <= 10; i++)
{
cts.Token.ThrowIfCancellationRequested();
Console.WriteLine($"Шаг {i}/10...");
await Task.Delay(1000, cts.Token);
}
});
Оборачиваем выполнение в try/catch, чтобы корректно обработать отмену задачи:
catch (OperationCanceledException)
{
Console.WriteLine("Задача отменена");
}
🔥 Теперь ты умеешь прерывать асинхронные задачи по таймеру или по событию — удобно и безопасно.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍8❤7