CodeBlanks Logo Icon CodeBlanks

StopCoroutine

StopCoroutine ile çalışan bir coroutine'i durdurmayı öğrenirsin.

StopCoroutine ile durdurma

Çalışmakta olan bir coroutine'i süresi dolmadan yarıda kesmek için StopCoroutine() metodu kullanılır. En güvenilir yöntem, başlatma anında elde edilen Coroutine referansını metoda parametre olarak vermektir.

// Çalışan görevi referans üzerinden iptal etme
if (activeRoutine != null) {
    StopCoroutine(activeRoutine);
}

Örneğin karakter darbe aldığında devam eden büyü yapma (casting) coroutine'i bu şekilde iptal edilir.

StopAllCoroutines ve GameObject deaktivasyonu

Bir nesne üzerindeki tüm zamanlanmış görevleri topluca sıfırlamak için StopAllCoroutines() çağrılır. Ayrıca bir GameObject SetActive(false) ile kapatıldığında üzerindeki tüm coroutine'ler otomatik olarak sonlandırılır.

void OnDisable() {
    // Nesne devre dışı kalırken coroutine'leri temizle
    StopAllCoroutines();
}

Fakat sadece betiğin (script) enabled = false yapılması çalışan coroutine'leri durdurmaz; nesnenin tamamen kapanması gerekir.

Uygulama Durdurma komutunu ve durumunu yazdır

command değişkenine "StopCoroutine", status değişkenine "Cancelled" ata. Ekrana Command: StopCoroutine | Status: Cancelled yazdır.

Başlangıç kodu

Player.cs
using System;

class Program
{
    static void Main()
    {
        // command ve status değerlerini tanımlayıp yazdır
    }
}

Örnek çözüm

Player.cs
using System;

class Program
{
    static void Main()
    {
        string command = "StopCoroutine";
        string status = "Cancelled";
        Console.WriteLine("Command: " + command + " | Status: " + status);
    }
}

Beklenen çıktı

Command: StopCoroutine | Status: Cancelled

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir MonoBehaviour nesnesinde o anda aktif çalışan TÜM coroutine'leri tek hamlede durdurmak için hangi metot çağrılır?

  • ClearRoutines();
  • AbortAll();
  • StopAllCoroutines(); Doğru cevap
  • KillCoroutines();

Açıklama: StopAllCoroutines(), ilgili betik üzerinde çalışmakta olan bütün coroutine süreçlerini tek seferde iptal eder.

2 Çalışan coroutine'i referans ile durdur

Soru
StopCoroutine(____);
Cevap
StopCoroutine(activeRoutine);

Açıklama: Belirli bir coroutine'i durdurmak için StartCoroutine tarafından döndürülen referans parametre verilir.

3 Durdurma ve temizlik kavramları

Kavram Anlamı
StopCoroutine Coroutine'i erkenden durduran metot
StopAllCoroutines Tüm coroutine'leri iptal eder
SetActive(false) Nesneyi kapatıp coroutine durdurur
Cleanup Nesne kapalıyken görevleri temizle

Orta seviye bölümündeki tüm dersler