Material atama
- Oyun Geliştirme kursu
- Orta seviye
- Ders 17/83
- 4 dk
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
using System;
class Program
{
static void Main()
{
// renderer ve material değerlerini tanımlayıp yazdır
}
}Örnek çözüm
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
renderer.____ = goldMaterial;
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 |