CodeBlanks Logo Icon CodeBlanks

Material atama

Bir MeshRenderer'a material atamayı öğrenirsin.

MeshRenderer'a Material atama

Bir GameObject'in üzerindeki materyali çalışma anında değiştirmek için MeshRenderer bileşeni kullanılır. Kod üzerinden renderer.material ataması yapıldığında Unity bu nesneye özel bağımsız bir materyal kopyası (instance) oluşturur.

MeshRenderer renderer = GetComponent<MeshRenderer>();
// Nesneye yeni materyal bağlama
renderer.material = newMaterial;

Bu sayede aynı materyali paylaşan diğer nesnelerin rengi bozulmadan sadece seçilen nesne güncellenir.

Çoklu Materyaller ve sharedMaterial

Eğer bir 3D model birden çok alt parçadan (sub-mesh) oluşuyorsa, renderer.materials dizisiyle her parçaya ayrı materyal bağlanabilir.

// İlk parçanın materyaline erişim
Material firstPart = renderer.materials[0];
// Orijinal proje varlığını paylaşarak atama
renderer.sharedMaterial = baseMaterial;

Kopya oluşturmadan doğrudan diskteki varlığı paylaşmak bellek tasarrufu sağlar ve sharedMaterial ile yapılır.

Uygulama Materyal atama durumunu yazdır

renderer değişkenine "MeshRenderer", material değişkenine "GoldMaterial" ata. Ekrana Target: MeshRenderer | Assigned: GoldMaterial yazdır.

Başlangıç kodu

Player.cs
using System;

class Program
{
    static void Main()
    {
        // renderer ve material değerlerini tanımlayıp yazdır
    }
}

Örnek çözüm

Player.cs
using System;

class Program
{
    static void Main()
    {
        string renderer = "MeshRenderer";
        string material = "GoldMaterial";
        Console.WriteLine("Target: " + renderer + " | Assigned: " + material);
    }
}

Beklenen çıktı

Target: MeshRenderer | Assigned: GoldMaterial

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir nesnenin materyalini kod üzerinden 'renderer.material' ile değiştirdiğimizde ne gerçekleşir?

  • O nesneye özel bağımsız bir materyal kopyası (instance) oluşturulup atanır Doğru cevap
  • Projedeki aynı materyali kullanan tüm nesneler sahneden silinir
  • Modelin poligon sayısı otomatik olarak iki katına çıkarılır
  • Sahnedeki tüm ışıklar tamamen devre dışı kalır

Açıklama: renderer.material çağrısı orijinal dosyayı bozmamak için otomatik olarak materyali kopyalar (instantiate eder).

2 Materyali bileşene ata

Soru
renderer.____ = goldMaterial;
Cevap
renderer.material = goldMaterial;

Açıklama: MeshRenderer bileşeninde çalışma anında nesneye özel materyal atamak için 'material' özelliği kullanılır.

3 Materyal atama alanları

Kavram Anlamı
MeshRenderer Geometriyi materyalle çizen bileşen
material Nesneye özel bağımsız materyal kopyası
materials Çok parçalı nesnelerin materyal dizisi
sharedMaterial Orijinal paylaşılan materyale erişim

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