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

Unity'de IEndDragHandler ve OnEndDrag() Metodu: Tam Bir Anlatım

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

Unity oyun motorunda sürükle ve bırak mekaniği, oyun tasarımında interaktif ve kullanıcı dostu arayüzler oluşturmak için oldukça kullanışlıdır. Bu mekaniğin en önemli bileşenlerinden biri de IEndDragHandler arayüzü ve onun OnEndDrag() metodudur. Bu makalede, IEndDragHandler ve OnEndDrag() metodunu detaylı bir şekilde ele alacağız, kullanım örnekleri ve pratik ipuçlarıyla destekleyeceğiz.

IEndDragHandler Arayüzü


IEndDragHandler, Unity'nin Event System'i tarafından kullanılan bir arayüzdür. Bir nesneye bu arayüzü eklediğinizde, o nesne sürükleme işleminin sonlandırıldığında OnEndDrag() metodunu tetikler. Bu, sürükleme işleminin tamamlandığını tespit etmek ve buna göre işlemler gerçekleştirmek için ideal bir mekanizmadır.

OnEndDrag() Metodu


OnEndDrag() metodu, PointerEventData adında bir parametre alır. Bu parametre, sürükleme işlemiyle ilgili birçok yararlı bilgi içerir. Örneğin, fare veya dokunmatik ekranın konumu, sürükleme işleminin başlangıç noktası ve daha fazlası.
public class MyDraggableObject : MonoBehaviour, IEndDragHandler {    public void OnEndDrag(PointerEventData eventData)    {        // Sürükleme işlemi bittiğinde yapılacak işlemler burada yazılır.    }}

Önemli Not: IEndDragHandler arayüzünü kullanabilmek için, nesnenizin Event System'e bağlı olması ve Event Trigger bileşeni eklenmiş olması gerekir. Event Trigger bileşeninde, End Drag olayına bir fonksiyon atamanız gerekecektir. Bu fonksiyon, OnEndDrag() metodu olacaktır.

OnEndDrag() Metodunun Kullanım Örnekleri


1. Nesne Yerleştirme


Sürükle bırak ile bir nesneyi başka bir nesnenin üzerine bıraktığınızda, OnEndDrag() metodu içinde nesnenin yeni pozisyonunu ayarlayabilirsiniz. Örneğin, bir envanter sisteminde eşyaları envanter alanına yerleştirmek için bu yöntemi kullanabilirsiniz.
public void OnEndDrag(PointerEventData eventData) {    transform.position = eventData.position; // Nesneyi fare konumuna yerleştirir.}

2. Oyuncu Hareketi


Bir strateji oyununda, bir birimi haritada sürükledikten sonra OnEndDrag() metodu içinde birimin yeni hedef pozisyonunu belirleyebilirsiniz. Bu, birimin bırakıldığı noktaya doğru hareket etmesini sağlayacaktır.
public void OnEndDrag(PointerEventData eventData) {    Vector3 targetPosition = eventData.position;    // Birimi targetPosition'a doğru hareket ettirmek için kodlar burada yazılır.}

3. Eylem Tetikleme


Sürükle bırak işlemi bittiğinde, farklı bir eylemi tetiklemek için OnEndDrag() metodunu kullanabilirsiniz. Örneğin, bir kart oyununda bir kartı masaya bıraktığınızda, kartın etkisini tetikleyebilirsiniz.
public void OnEndDrag(PointerEventData eventData) {    // Kartın etkisini tetikleyen kodlar burada yazılır.}

PointerEventData Parametresi


OnEndDrag() metodunun aldığı PointerEventData parametresi, sürükleme işlemi hakkında birçok bilgi içerir. Bu bilgilerden bazıları şunlardır:

  • position: Fare veya dokunmatik ekranın dünya uzayındaki konumu.

  • delta: Son karedeki konum değişikliği.

  • button: Hangi fare tuşunun kullanıldığı.

  • pressPosition: Sürükleme işleminin başladığı konum.


Bu parametreleri kullanarak, sürükleme işlemi hakkında detaylı bilgi alabilir ve buna göre işlemler gerçekleştirebilirsiniz.

İpuçları ve Püf Noktaları



  • OnBeginDrag() ve OnDrag() metodlarını da kullanarak sürükleme işlemini daha detaylı bir şekilde yönetebilirsiniz.

  • Performans sorunlarını önlemek için, OnEndDrag() metodu içinde ağır işlemler yapmaktan kaçının.

  • OnEndDrag() metodu, sürükleme işleminin her zaman başarılı bir şekilde tamamlandığını garanti etmez. Kullanıcı sürüklemeyi iptal edebilir veya başka bir hata oluşabilir. Bu durumları da kontrol etmeniz önemlidir.


Bu makalede, Unity'de IEndDragHandler arayüzü ve OnEndDrag() metodunun nasıl kullanılacağını detaylı bir şekilde açıkladık. Umarım bu bilgiler, Unity oyunlarınızda sürükle ve bırak mekaniğini daha etkili bir şekilde kullanmanıza yardımcı olur.

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