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

Unity'de IBeginDragHandler ve OnBeginDrag() Metodu ile Drag and Drop Sistemi

Paylaşan: Unity Eğitim 02 September 2025 3 dakika okuma 93 görüntülenme

Merhaba Unity geliştiricileri! Bu yazıda, Unity'de sürükle ve bırak (drag and drop) sistemlerinin temel taşlarından biri olan IBeginDragHandler arayüzü ve OnBeginDrag() metodunu detaylı bir şekilde inceleyeceğiz. Bu arayüz, bir nesnenin sürükleme işlemine başlamasını algılamak ve bu olaya tepki vermek için kullanılır. Örneklerle ve adım adım açıklamalarla konuyu daha iyi kavrayacağız.

IBeginDragHandler Arayüzü


IBeginDragHandler, Unity'nin Event System'i tarafından sağlanan bir arayüzdür. Bu arayüzü kullanan bir nesne, fare veya dokunmatik ekranla sürükleme işlemi başladığında OnBeginDrag() metodunu çağırır. Bu sayede, sürükleme işleminin başlangıcında özel işlemler gerçekleştirebilirsiniz.

OnBeginDrag() Metodu


OnBeginDrag() metodu, IBeginDragHandler arayüzünün tek metodudur ve PointerEventData nesnesi alır. Bu nesne, sürükleme işlemi ile ilgili önemli bilgiler içerir: fare pozisyonu, tıklama düğmesi, vb. Bu bilgileri kullanarak, sürükleme işlemine özel davranışlar ekleyebilirsiniz.
using UnityEngine;
using UnityEngine.EventSystems;

public class DragHandler : MonoBehaviour, IBeginDragHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
// Sürükleme işlemi başladığında yapılacak işlemler
Debug.Log("Sürükleme başladı!");
}
}


Yukarıdaki örnekte, DragHandler script'i IBeginDragHandler arayüzünü uygular ve OnBeginDrag() metodu, sürükleme başladığında konsola "Sürükleme başladı!" mesajını yazar. Bu, basit bir örnektir; OnBeginDrag() metodunda daha karmaşık işlemler gerçekleştirebilirsiniz.

Örnek Senaryo: Oyun İçinde Nesne Sürükleyip Bırakma


Şimdi, daha somut bir örnek üzerinde çalışalım. Oyunumuzda, bir envanter sistemi olduğunu ve oyuncunun envanterindeki nesneleri sürükle-bırak yöntemiyle yerleştirebileceğini varsayalım. Bu senaryo için OnBeginDrag() metodunu nasıl kullanacağız?

Adım 1: Nesneye Script Ekleme


Envanterdeki her bir nesneye, aşağıdaki script'i ekleyelim:

using UnityEngine;
using UnityEngine.EventSystems;

public class ItemDragHandler : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public void OnBeginDrag(PointerEventData eventData)
{
GetComponent<CanvasGroup>().blocksRaycasts = false;
}

public void OnDrag(PointerEventData eventData)
{
transform.position = Input.mousePosition;
}

public void OnEndDrag(PointerEventData eventData)
{
GetComponent<CanvasGroup>().blocksRaycasts = true;
}
}


Bu script, IBeginDragHandler, IDragHandler ve IEndDragHandler arayüzlerini uygular. OnBeginDrag() metodunda, nesnenin ışın atmasını engellemek için CanvasGroup bileşeninin blocksRaycasts özelliğini false olarak ayarlıyoruz. Bu, sürükleme sırasında nesnenin diğer arayüz elemanlarının üzerine geçmesini sağlar.

Adım 2: Canvas ve Event System


Sahnenizde bir Canvas ve Event System olduğundan emin olun. Event System, kullanıcı girdilerini işlemek için gereklidir.

Adım 3: Sürükleme ve Bırakma Alanı


Nesneleri bırakabileceğiniz bir alan oluşturmanız gerekecektir. Bu alan, IDropHandler arayüzünü uygulayan bir script ile donatılmalıdır. Bu script, bırakılan nesneye göre çeşitli işlemler yapmanızı sağlar.

Adım 4: Test Etme


Oyunu çalıştırın ve envanterdeki nesneleri sürükleyip bırakmayı deneyin. Nesnelerin düzgün bir şekilde sürükleneceğini ve bırakılacağını göreceksiniz.

Sonuç


IBeginDragHandler arayüzü ve OnBeginDrag() metodu, Unity'de sürükle ve bırak sistemleri oluşturmanın temelini oluşturur. Bu arayüzü kullanarak, oyunlarınıza etkileşimli ve kullanıcı dostu özellikler ekleyebilirsiniz. Bu yazıda verilen örnekleri inceleyerek ve kendi projelerinizde uygulayarak, bu konudaki bilginizi daha da geliştirebilirsiniz.

Daha detaylı bilgi ve görsel bir anlatım için aşağıdaki videoyu izleyebilirsiniz: [YOUTUBE_VIDEO_BURAYA]

🧠 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!