Mesh material ataması
- Oyun Geliştirme kursu
- Orta seviye
- Ders 5/83
- 4 dk
Bir Mesh'e material atamayı ve alt mesh'leri öğrenirsin.
MeshRenderer'a Material Atama
Bir 3D modelin yüzeyinin nasıl görüneceğini (renk, doku, parlaklık) Material belirler. MeshRenderer bileşeni üzerindeki material veya materials özelliği ile malzemeye kod üzerinden erişilebilir ve özellikler dinamik olarak değiştirilebilir.
MeshRenderer cizici = GetComponent<MeshRenderer>();
cizici.material.color = Color.red;Alt Mesh'ler (Submesh) ve Çoklu Malzeme
Karmaşık 3D modeller tek bir geometri gibi görünse de farklı parçalarında farklı malzemeler kullanabilmek için Submesh (alt mesh) yapısına bölünür. Örneğin bir arabanın gövdesi metal, camları şeffaf malzeme kullanır. Bu durumda renderer.materials dizisi her submesh için bir malzeme tutar.
Material[] tumMalzemeler = renderer.materials;
Debug.Log("Malzeme sayısı: " + tumMalzemeler.Length);Uygulama Malzeme Sayısını Oku
renderer.materials.Length değerini sayi değişkenine ata. Ardından Debug.Log("Malzeme: " + sayi); ile yazdır.
Başlangıç kodu
using System;
public class Material
{
public string name;
public Material(string name) { this.name = name; }
}
public class MeshRenderer
{
public Material[] materials = new Material[] { new Material("Gövde"), new Material("Cam") };
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
MeshRenderer renderer = new MeshRenderer();
// Atanmis malzeme sayisini alip konsola yazdir
}
}Örnek çözüm
using System;
public class Material
{
public string name;
public Material(string name) { this.name = name; }
}
public class MeshRenderer
{
public Material[] materials = new Material[] { new Material("Gövde"), new Material("Cam") };
}
public static class Debug
{
public static void Log(object message) => Console.WriteLine(message);
}
public class Program
{
public static void Main()
{
MeshRenderer renderer = new MeshRenderer();
int sayi = renderer.materials.Length;
Debug.Log("Malzeme: " + sayi);
}
}Beklenen çıktı
Malzeme: 2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kod üzerinden bir nesnenin mevcut malzemesinin rengini değiştirmek için hangi özellik yolu kullanılır?
- renderer.material.color Doğru cevap
- meshFilter.color
- transform.material.color
- renderer.mesh.color
Açıklama: Malzeme rengini değiştirmek için MeshRenderer üzerindeki material özelliğinin color değişkenine ulaşılır.
2 Çoklu Malzeme Dizisi
Material[] liste = renderer.____;
Material[] liste = renderer.materials;
Açıklama: Bir nesneye atanmış tüm malzemelerin dizisine materials özelliğiyle erişilir.
3 Malzeme Terimleri
| Kavram | Anlamı |
|---|---|
renderer.material |
Nesnenin ilk veya tek malzemesi |
renderer.materials |
Nesneye atanmış tüm malzemelerin dizisi |
Submesh |
Farklı malzeme alabilen alt geometri |
material.color |
Malzemenin temel yüzey rengi |