CodeBlanks Logo Icon CodeBlanks

Mesh material ataması

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

Player.cs
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

Player.cs
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

Soru
Material[] liste = renderer.____;
Cevap
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

Orta seviye bölümündeki tüm dersler