CodeBlanks Logo Icon CodeBlanks

Meydan okuma 1: Materyal ataması

Bir MeshRenderer'a koddan material atayan scripti yazarsın.

MeshRenderer ve Dinamik Materyal Ataması

Kod üzerinden bir 3D modelin görünümünü değiştirmek için MeshRenderer bileşeninin material özelliğine yeni bir Material atanır. Bu işlem çalışma zamanında karakterin hasar alması, güçlenmesi veya çevre koşullarına göre renk değiştirmesi gibi durumlarda sıkça kullanılır.

MeshRenderer cizici = GetComponent<MeshRenderer>();
cizici.material = yeniMateryal;

Uygulama Materyal Değiştirme Görevi

renderer.material = new Material("Kırmızı"); ataması yap ve Debug.Log("Materyal: " + renderer.material.name); 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 material;
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        MeshRenderer renderer = new MeshRenderer();
        // Materyal olustur, ata ve adini 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 material;
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        MeshRenderer renderer = new MeshRenderer();
        renderer.material = new Material("Kırmızı");
        Debug.Log("Materyal: " + renderer.material.name);
    }
}

Beklenen çıktı

Materyal: Kırmızı

Uygulama Aktif Materyal Kontrolü

if (renderer.material != null) şartı ile materyalin varlığını kontrol et ve Debug.Log("Materyal aktif: " + renderer.material.name); 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 material = new Material("Mavi");
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        MeshRenderer renderer = new MeshRenderer();
        // Null kontrolu yap ve aktif materyal adini 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 material = new Material("Mavi");
}

public static class Debug
{
    public static void Log(object message) => Console.WriteLine(message);
}

public class Program
{
    public static void Main()
    {
        MeshRenderer renderer = new MeshRenderer();
        if (renderer.material != null)
        {
            Debug.Log("Materyal aktif: " + renderer.material.name);
        }
    }
}

Beklenen çıktı

Materyal aktif: Mavi

Soru ve cevaplar

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

1 Kod içerisinde bir GameObject üzerindeki MeshRenderer bileşenine çalışma anında yeni bir materyal atamak için hangi özellik kullanılır?

  • renderer.color
  • renderer.sharedMesh
  • renderer.material Doğru cevap
  • renderer.transform

Açıklama: renderer.material özelliği kullanılarak nesnenin aktif materyali çalışma anında dinamik olarak değiştirilir.

2 Materyali Ata

Soru
cizici.____ = altinMateryal;
Cevap
cizici.material = altinMateryal;

Açıklama: MeshRenderer bileşenine materyal atamak için material özelliği kullanılır.

3 Materyal ve Çizici Terimleri

Kavram Anlamı
renderer.material Çalışma anında atanan aktif materyal
MeshRenderer Geometriyi materyalle çizen bileşen
Material Yüzey rengi ve dokusunu tutan kaynak
material.color Materyalin ana renk tonu değeri

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