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

Unity'de Handles.DrawWireCube() ile 3D Küpler Çizme

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

Unity oyun motorunda sahne üzerinde nesnelerin manipülasyonu ve görselleştirmesi için güçlü araçlar bulunur. Bu araçlardan biri de Handles sınıfıdır. Bu yazıda, Handles.DrawWireCube() fonksiyonunu kullanarak 3 boyutlu tel kafes küpler nasıl çizileceğini detaylı bir şekilde ele alacağız. Bu fonksiyon, özellikle sahne düzenleme araçları, özel editörler ve görsel debuglama için oldukça kullanışlıdır.

Handles.DrawWireCube() Fonksiyonu


Handles.DrawWireCube() fonksiyonu, belirtilen konum ve boyutta bir tel kafes küpe (wireframe cube) çizer. Bu fonksiyon, Unity'nin sahne görünümünde geçici olarak çizim yapar ve oyunun çalıştığı sırada görünmez. Genellikle sahne düzenleme araçları veya özel editörlerde kullanılır.

Parametreler



  • position: Küpün merkez noktasının dünya uzayındaki konumunu belirtir (Vector3).

  • size: Küpün boyutlarını belirtir (Vector3). x, y ve z değerleri sırasıyla küpün genişlik, yükseklik ve derinliğini temsil eder.


Örnek Kullanım


Aşağıdaki kod örneği, sahnenin merkezinde 2x2x2 birim boyutunda bir tel kafes küp çizer:
using UnityEngine;

public class DrawWireCubeExample : MonoBehaviour
{
void OnDrawGizmos()
{
Handles.DrawWireCube(Vector3.zero, new Vector3(2, 2, 2));
}
}


Bu kod, OnDrawGizmos() fonksiyonu içinde yer almalıdır. OnDrawGizmos(), Unity'nin sahne görünümünde çizimler yapmamızı sağlayan bir fonksiyondur. Vector3.zero, küpün merkez noktasının orijin (0,0,0) noktasında olmasını sağlar.

Daha Gelişmiş Kullanımlar


Handles.DrawWireCube() fonksiyonunu daha da gelişmiş şekillerde kullanabiliriz. Örneğin, küpün dönüşünü, rengini ve kalınlığını değiştirebiliriz:

Dönüş


Küpün dönüşünü, Handles.matrix özelliğini kullanarak değiştirebiliriz. Aşağıdaki örnek, küpü x ekseni etrafında 45 derece döndürür:
using UnityEngine;

public class DrawWireCubeExample : MonoBehaviour
{
void OnDrawGizmos()
{
Matrix4x4 matrix = Matrix4x4.TRS(Vector3.zero, Quaternion.Euler(45, 0, 0), Vector3.one);
Handles.matrix = matrix;
Handles.DrawWireCube(Vector3.zero, new Vector3(2, 2, 2));
Handles.matrix = Matrix4x4.identity; // Matrisi sıfırla
}
}


Renk


Küpün rengini, Handles.color özelliğini kullanarak değiştirebiliriz:
using UnityEngine;

public class DrawWireCubeExample : MonoBehaviour
{
void OnDrawGizmos()
{
Handles.color = Color.red;
Handles.DrawWireCube(Vector3.zero, new Vector3(2, 2, 2));
}
}


Kalınlık


Ne yazık ki, Handles.DrawWireCube() fonksiyonunun doğrudan kalınlık parametresi yoktur. Kalınlığı değiştirmek için farklı yöntemler kullanmanız gerekebilir (örneğin, daha kalın çizgiler kullanarak kendi çizim fonksiyonunuzu oluşturmak).

Kullanım Alanları


Handles.DrawWireCube() fonksiyonunun birçok kullanım alanı vardır:

  • Sahne Düzenleme Araçları: Nesnelerin boyutlarını ve konumlarını görsel olarak ayarlamak için.

  • Özel Editörler: Özel verileri görselleştirmek için.

  • Debuglama: Oyunun içindeki nesnelerin sınır kutularını (bounding boxes) göstermek için.

  • Görsel İpuçları: Kullanıcıya oyun içi mekanikleri veya etkileşimleri göstermek için.


Bu fonksiyon, Unity'de güçlü bir araçtır ve çeşitli amaçlar için kullanılabilir. Ancak, performans açısından, gereksiz yere çok sayıda Handles çizimi yapmaktan kaçınmalısınız.

 

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