Iniciar sesión Registro
Anuncios
Tu espacio publicitario
Reserva este slot exclusivo para el periodo elegido.
Comprar publicidad →
Logotipo de la comunidad de telegram - Devlog без QA | Розробка ігор
Añadido 06 dic. 2025

Devlog без QA | Розробка ігор

@GameDevelopmentUA
Número de suscriptores: 632
Fotos: 275
Videos: 105
Enlaces: 520
Descripción:
Unity/Новини/Ідеї/Натхнення й інший якісний (а можливо і не дуже) контент тут! Зв’язок: @DevAndrew Анти-скам бот: @IndieSafeBot
Fuente

Devlog без QA | Розробка ігор | Корутини & Task в C#Так. Почнемо з простого: чи всі взагалі знають різ...

Logotipo de la comunidad de telegram - UA Game Development | Український геймдев Devlog без QA | Розробка ігор @GameDevelopmentUA
412 Vistas/Alcance 2025-12-25 17:15 Mensaje №460
🧐 Корутини & Task в C#Так. Почнемо з простого: чи всі взагалі знають різницю?Особисто я — людина, яка майже не використовувала Task, — ніколи їх навіть не порівнював і тим паче не замислювався, у чому ж між ними різниця.Давайте поясню:📱 Таски (Task) у C#:  це асинхронні операції переважно реалізовані в рамках Task-based Asynchronous Pattern (TAP). Центральним класом є System.Threading.Tasks.Task, який «представляє одну операцію, що не повертає значення і зазвичай виконується асинхронно».Що це означає? Це спосіб запустити якусь роботу так, щоб програма не зависала і могла займатись іншими справами, поки ця робота виконується. Задачі (Tasks) зазвичай використовуються для виконання асинхронної роботи поза основним (UI) потоком, зокрема через пул потоків .NET.При використанні ключового слова async/await компілятор C# «перетворює ваш код у станoву машину». Це означає, що метод, який містить await, компілюється у спеціальний клас, що відстежує, де саме припинити виконання і як відновити його після завершення фонової операції. Також оператор await призупиняє виконання поточного методу та повертає керування його виклику, не блокуючи при цьому потік.📱 Coroutines в Unity використовують механізм yield return для очікування різних подій (наступного кадру, затримки через WaitForSeconds тощо). Unity щокадру перевіряє список активних корутин: якщо відбулася подія очікування (наприклад, минув час WaitForSeconds або настало наступне оновлення кадру після yield return null), відповідна корутина відновлює виконання. Таким чином корутина «розбиває» завдання на частини по кадрах, але завжди в межах основного потоку рушія.Не переживайте. Лінки на які не які документації я залишу 😅 Якщо підсумувати основні відміності:Потоковий контекст: Задачі C# зазвичай працюють у фонових потоках, звільняючи основний потік для інших операцій. А Unity-корутини навпаки виконуються виключно на основному потоці рушія (ігровому циклі).• Механізм виконання: У C# асинхронний метод з await компілюється в станoву машину, яка «відслідковує виконання на await та продовжує його після завершення фонового завдання». Корутина ж реалізована через ітератор IEnumerator і генерує схожий механізм: під час компіляції C# утворюється клас, що зберігає поточний стан методу між yield-блоками.• Синхронізація та очікування: У TAP-методі C# очікування завершується подією/сигналом: коли фонове завдання виконується, воно «оповіщає» про свій стан, і тоді викликаються методи-продовжувачі (continuations). Це не вимагає постійного опитування як в Unity-корутинах, де перевірка відбувається щокадру.• Призначення та використання: а тут самі подумайте: хто з Вас використовував таски для якихось анімацій (чи для чого там ще потрібні корутини))?. Task призначені для будь-якого асинхронного програмування (мережевих запитів, паралельних обчислень тощо).ℹ️ Джерела: [Task.class] / [Asynchronous] / [await] / [Coroutines]Не знаю чи заходить вам такого роду контент, але сподіваюся, що так.Наступного разу, можливо, розкажу "що це за потоки" / Threads трішки детальніше 🔥✈️ Gamedev | #уроки #csharp #tasks #coroutines #unity #async #gamedev