Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de SetActive() Metodu ile Oyun Nesnelerini Etkinleştirme ve Devre Dışı Bırakma

Paylaşan: Unity Eğitim 22 September 2025 4 dakika okuma 128 görüntülenme

Merhaba Unity geliştiricileri! Bu yazıda, Unity oyun motorunda sıklıkla kullanılan ve oldukça önemli bir fonksiyon olan SetActive() metodunu detaylı bir şekilde inceleyeceğiz. SetActive() metodu, oyun sahnesindeki GameObject'lerin etkinlik durumunu kontrol etmemizi sağlar. Basitçe açıklamak gerekirse, bu metot ile oyun nesnelerini görünür/görünmez yapabilir veya etkileşimli/etkileşimsiz hale getirebiliriz.

SetActive() Metodunun Temelleri


SetActive(bool isActive) metodu, bir parametre alır: isActive. Bu parametre, true veya false değerlerini alabilir. true değeri, GameObject'i etkinleştirirken, false değeri GameObject'i devre dışı bırakır.
// GameObject'i etkinleştirme
gameObject.SetActive(true);

// GameObject'i devre dışı bırakma
gameObject.SetActive(false);


Örnek Kullanım Senaryoları


SetActive() metodunun kullanım alanları oldukça geniştir. İşte birkaç örnek:

  • Oyun Başlangıcında Nesneleri Gizleme: Oyun başladığında bazı nesneleri gizlemek ve daha sonra oyunda belirli bir noktada ortaya çıkarmak için kullanılabilir.

  • Menüler ve UI Elementleri: Oyun menülerini veya UI elementlerini gösterip gizlemek için idealdir. Örneğin, bir oyun menüsü açıldığında diğer UI elementlerini devre dışı bırakabilirsiniz.

  • Animasyon Kontrolü: Animasyonların başlangıç ve bitiş noktalarını kontrol etmek için kullanılabilir. Örneğin, bir animasyon bittiğinde bir GameObject'i devre dışı bırakabilirsiniz.

  • Performans Optimizasyonu: Görünmeyen veya etkileşimde bulunulmayan GameObject'leri devre dışı bırakarak oyun performansını artırabilirsiniz. Devre dışı bırakılan GameObject'ler, güncelleme döngüsünde işlenmez, bu da CPU yükünü azaltır.


SetActive() Metodu ile İlgili Dikkat Edilmesi Gereken Noktalar


SetActive(false) ile devre dışı bırakılan bir GameObject'in tüm bileşenleri de devre dışı bırakılır. Bu, bağlı script'lerin Update() ve diğer fonksiyonlarının çalışmasını durduracağı anlamına gelir. Bu durum, bazı durumlarda istenmeyen sonuçlara yol açabilir. Örneğin, bir GameObject'in Rigidbody bileşeni devre dışı bırakılırsa, fiziksel etkileşimleri de durur.

Ayrıca, SetActive() metodu, hiyerarşik yapıda alt nesneleri de etkiler. Bir parent GameObject devre dışı bırakılırsa, tüm çocuk GameObject'leri de devre dışı bırakılır. Bu durumun farkında olmak ve kodunuzu buna göre yazmak önemlidir.

Alternatif Yöntemler


Bazı durumlarda, SetActive() yerine alternatif yöntemler kullanmak daha uygun olabilir. Örneğin, bir GameObject'in görünürlüğünü kontrol etmek için Renderer bileşeninin enabled özelliğini kullanabilirsiniz. Bu, GameObject'i tamamen devre dışı bırakmadan sadece görünürlüğünü değiştirmenizi sağlar. Bu yöntem, performans açısından SetActive()'e göre daha az maliyetli olabilir.
// Renderer bileşenini kullanarak görünürlüğü değiştirme
Renderer renderer = gameObject.GetComponent<Renderer>();
renderer.enabled = false; // Görünmez yapar
renderer.enabled = true; // Görünür yapar

Örnek Kod


İşte SetActive() metodunun basit bir kullanım örneği:
using UnityEngine;

public class SetActiveExample : MonoBehaviour
{
public GameObject myObject;

void Start()
{
myObject.SetActive(false); // Oyun başladığında nesneyi gizle
}

void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
myObject.SetActive(!myObject.activeSelf); // Boşluk tuşuna basıldığında nesneyi göster/gizle
}
}
}


Bu kod, myObject adlı bir GameObject'i oyun başladığında gizler ve boşluk tuşuna basıldığında görünür/görünmez yapar. !myObject.activeSelf ifadesi, activeSelf özelliğinin değerini tersine çevirir, böylece her basışta nesnenin durumu değişir.

 

Umarım bu yazı, Unity'de SetActive() metodunun kullanımını anlamanıza yardımcı olmuştur. Unutmayın ki, performans optimizasyonu için SetActive() metodunu doğru ve bilinçli bir şekilde kullanmak önemlidir.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!