Material (Malzeme), Unity’de bir nesnenin yüzey özelliklerini tanımlamak için kullanılır ve nesnelerin renk, yansıma, saydamlık gibi görsel efektlerini kontrol eder. Material, 3D nesnelerde olduğu gibi 2D nesnelerde de kullanılabilir, ancak temel olarak 3D projelerde daha fazla işlev görür.
Material bileşeni, sahnedeki nesnelerin gerçekçi veya stilize bir görünüme sahip olmasını sağlar. Material bileşeninin yüzey özellikleri Shader adı verilen görsel işleme motorları ile belirlenir. Her material bir shader kullanır, ancak shader’ı değiştirdikçe material’in özellikleri de değişir.
1. Materials Menüsüne Nasıl Ulaşılır?
Unity’de Material bileşeni oluşturmak ve düzenlemek için şu adımları izleyebilirsiniz:
- Project Panelinde Material Oluşturma:
- Assets paneline sağ tıklayın, ardından Create > Material seçeneğini tıklayın. Yeni bir Material oluşturulacaktır.
- Inspector Panelinde Material’i Düzenleme:
- Material’i seçtiğinizde, sağ taraftaki Inspector panelinde Material özelliklerini görebilir ve düzenleyebilirsiniz.
- Nesneye Material Ekleme:
- Bir nesneye material eklemek için oluşturduğunuz material’i doğrudan nesnenin üzerine sürükleyebilirsiniz. Alternatif olarak, Mesh Renderer bileşeninde Material alanına material’i sürükleyip bırakabilirsiniz.
2. Material Çeşitleri
Unity’de Material’ler, kullanılan shader türüne göre çeşitlenir. Material’in hangi türde görüneceğini belirleyen şey Shader’dır. Unity, farklı efektler için çeşitli yerleşik shader’lar sağlar. İşte en yaygın kullanılan shader türleri:
- Standard Shader: Unity’nin varsayılan shader’ıdır ve pek çok özelliğe sahiptir. Nesnelerin saydamlığı, yansıması, metalik görünümü gibi özellikleri kontrol edilebilir.
- Unlit Shader: Işıktan etkilenmeyen basit bir shader türüdür. Özellikle simgesel veya çizgi film tarzı grafikler için uygundur.
- Transparent Shader: Saydam nesneler için kullanılır. Cam, su veya duman efektleri için idealdir.
- Toon Shader: Çizgi film tarzı gölgelendirme sağlar ve stilize grafikler için uygundur.
- HDRP ve URP Shader’ları: Unity’nin High Definition Render Pipeline (HDRP) ve Universal Render Pipeline (URP) shader’ları, yüksek kaliteli grafikler için optimize edilmiştir ve HDRP veya URP projelerinde kullanılır.
3. Material Özellikleri ve Ayrıntılı Açıklamaları
Aşağıda Material bileşeninin özelliklerini, ne işe yaradıklarını ve nasıl kullanıldıklarını ayrıntılı olarak açıkladığım bir tablo bulabilirsiniz:
Özellik | Açıklama | Kullanım Durumları | Programatik Erişim |
---|---|---|---|
Albedo (Renk) | Nesnenin temel rengini veya dokusunu belirler. Material’in ana rengidir. | Tüm nesnelerin temel renk ve dokusunu ayarlamak için. | material.SetColor("_Color", Color.red); |
Metallic | Nesnenin metalik görünümünü belirler. 0 ile 1 arasında değer alır. 1 değeri nesneyi tamamen metalik yapar. | Metalik yüzeyler veya parlak metaller için yüksek değer kullanılabilir. | material.SetFloat("_Metallic", 0.5f); |
Smoothness (Pürüzsüzlük) | Yüzeyin ne kadar yansıtıcı veya pürüzsüz olduğunu belirler. 0 ile 1 arasında değer alır. | Cam veya parlak yüzeylerde yüksek, mat yüzeylerde düşük değer kullanılabilir. | material.SetFloat("_Glossiness", 0.8f); |
Normal Map | Nesnenin yüzeyine detay kazandıran bir harita ekler. Normallerin etkisini arttırır, yüzeye gerçekçilik katılır. | Kabartma efektleri veya yüzey detayları vermek için kullanılır. | material.SetTexture("_BumpMap", normalTexture); |
Occlusion (Gölgeleme) | Nesnenin çevresel gölgelenmesini belirler. 0 ile 1 arasında değer alır, yüzeyin gölge miktarını etkiler. | Çevresel ışık alan yüzeylerde gölge derinliği sağlamak için kullanılır. | material.SetFloat("_OcclusionStrength", 1.0f); |
Emission (Emisyon) | Nesnenin kendi ışığını yaymasını sağlar. Karanlıkta bile parlayarak dikkat çeken nesneler için kullanılır. | LED ekranlar, ışık saçan nesneler veya neon efektleri için. | material.SetColor("_EmissionColor", Color.blue); |
Detail Map (Detay Haritası) | Yüzeydeki ince detayları arttırmak için ek bir harita sağlar. | Doku detaylarını arttırmak ve daha gerçekçi yüzeyler için kullanılır. | material.SetTexture("_DetailAlbedoMap", detailTexture); |
Rendering Mode (Render Modu) | Nesnenin nasıl render edileceğini belirler: Opaque , Transparent , Cutout , Fade . | Cam gibi saydam nesnelerde Transparent , mat nesnelerde Opaque . | material.SetInt("_Mode", (int)UnityEngine.Rendering.BlendMode.Transparent); |
Material Özelliklerine Programatik Erişim
Material bileşeninin özelliklerine C# kodu ile erişebilir ve bunları değiştirebilirsiniz. İşte Material özelliklerine kodla nasıl erişileceğini gösteren bir tablo:
Özellik | Kod ile Erişim Örneği | Açıklama |
---|---|---|
Albedo (Renk) | material.SetColor("_Color", Color.red); | Nesnenin temel rengini kırmızıya ayarlar. |
Metallic | material.SetFloat("_Metallic", 0.5f); | Nesnenin metalik görünümünü %50 olarak ayarlar. |
Smoothness (Pürüzsüzlük) | material.SetFloat("_Glossiness", 0.8f); | Yüzeyi daha pürüzsüz ve yansıtıcı yapar. |
Normal Map | material.SetTexture("_BumpMap", normalTexture); | Normaller haritasını ekler, yüzey detayları kazandırır. |
Occlusion (Gölgeleme) | material.SetFloat("_OcclusionStrength", 1.0f); | Gölgeleme efektini maksimize eder. |
Emission (Emisyon) | material.SetColor("_EmissionColor", Color.blue); | Emisyon rengi mavi olarak ayarlanır, yüzey parlak görünür. |
Detail Map (Detay Haritası) | material.SetTexture("_DetailAlbedoMap", detailTexture); | Yüzeye ekstra detay haritası ekler. |
Rendering Mode (Render Modu) | material.SetInt("_Mode", (int)UnityEngine.Rendering.BlendMode.Transparent); | Render modunu saydam hale getirir. |
4. Material Özelliklerinin Değer Aralıkları ve Kullanım Durumları
Aşağıdaki tabloda Material bileşeninin özelliklerine ait değer aralıklarını ve hangi durumlarda hangi değerlerin kullanılabileceğini detaylandırdım:
Özellik | Değer Aralığı / Seçenekler | Önerilen Değerler | Kullanım Durumları |
---|---|---|---|
Albedo (Renk) | Renk paleti | Yüzeyin istenen rengine göre | Nesnenin ana rengini belirlemek için. |
Metallic | 0 – 1 | 0.5 (Orta parlaklık), 1 (Tam parlaklık) | Metalik yüzeylerde 0.5-1 arası, mat yüzeylerde daha düşük değerler tercih edilir. |
Smoothness (Pürüzsüzlük) | 0 – 1 | 0.7 (Cam için), 0.2 (Ahşap için) | Yansıtıcı yüzeyler için yüksek, mat yüzeyler için düşük değerler. |
Normal Map | Doku Haritası | Normal Map kullanımı | Yüzey detayları vermek için yüksek çözünürlüklü normal mapler tercih edilir. |
Occlusion (Gölgeleme) | 0 – 1 | 1 (Yoğun gölgeler), 0.5 (Yumuşak gölgeler) | Koyu gölge isteyen nesnelerde yüksek, hafif gölgelerde düşük değerler. |
Emission (Emisyon) | Renk paleti | Renk ve ışık yayılımına göre | LED ışıklar, neon tabelalar veya ışık saçan nesneler için parlak renkler tercih edilir. |
Detail Map | Doku Haritası | Detay yoğunluğuna göre | Küçük detaylar, ince çizgiler veya yüzey efektleri için kullanılır. |
Rendering Mode | Opaque, Transparent, Cutout, Fade | Opaque (Kapalı yüzey), Transparent (Saydam yüzey) | Cam veya saydam yüzeylerde Transparent, katı yüzeylerde Opaque kullanılır. |
5. Material Kullanım Alanları ve Dikkat Edilecekler
Kullanım Alanları
- Nesne Yüzeylerini Belirleme: Material, bir nesnenin rengini, yansımasını ve ışıkla olan etkileşimini belirler. Tüm nesnelerde kullanılabilir.
- Saydam ve Yarı Saydam Yüzeyler: Saydamlık gerektiren cam, su veya duman gibi efektlerde Material’in Transparent veya Cutout gibi render modları tercih edilir.
- Özel Shader ve Grafik Efektleri: Unity’nin yerleşik shader’ları dışında, özel shader’lar kullanarak daha gerçekçi ve karmaşık efektler elde edebilirsiniz.
Dikkat Edilmesi Gerekenler
- Doğru Render Modu Kullanımı: Saydam yüzeyler için Transparent, mat yüzeyler için Opaque seçilmelidir. Yanlış render modu performansı düşürebilir.
- Metalik ve Pürüzsüzlük Ayarları: Yüksek metalik ve pürüzsüzlük değerleri, özellikle mobil cihazlarda performans sorunlarına yol açabilir. Gereksiz yüksek değerlerden kaçınılmalıdır.
- Texture Boyutları: Yüksek çözünürlüklü texture’lar, bellekte fazla yer kaplayabilir ve oyunun performansını düşürebilir. Texture boyutları optimize edilmelidir.
Uygulanmaması Gereken Nesneler
- Arka Plan veya Statik Grafikler: Material, genellikle 3D nesnelerde kullanılır. Arka planlarda ve statik grafiklerde gereksiz kullanımdan kaçınılmalıdır.
- UI Elemanları: 2D UI elemanlarında Sprite Renderer ve UI Material tercih edilmelidir. Standart Material, UI elemanları için fazla olabilir.
Özet
Dikkat Edilecek Noktalar: Doğru render modu kullanımı, texture boyutlarının optimize edilmesi ve metalik/pürüzsüzlük ayarlarına dikkat edilmelidir.
Materials Menüsüne Erişim: Project panelinde Create > Material yoluyla yeni bir material oluşturulur ve Inspector panelinde ayarlanır.
Çeşitleri: Material, Standard, Unlit, Transparent, Toon gibi farklı shader’larla özelleştirilebilir.
Özellikler ve Kullanımı: Albedo, Metallic, Smoothness, Normal Map gibi özellikler ile nesne yüzeyi üzerinde tam kontrol sağlanır.
Kullanım Alanları: Nesne yüzeyini tanımlamak, saydamlık veya parlaklık efektleri eklemek, özel shader’lar ile görsel kaliteyi artırmak için kullanılır.