CodeBlanks Logo Icon CodeBlanks

Challenge 1: Material assignment

Write a script that assigns a material to a MeshRenderer from code.

MeshRenderer and Dynamic Material Assignment

To change the appearance of a 3D model through code, assign a new Material to the material property of the MeshRenderer component. This is frequently used at runtime when a character takes damage, gets a power-up, or changes color based on environmental conditions.

MeshRenderer renderer = GetComponent<MeshRenderer>();
renderer.material = newMaterial;

Practice Material Change Task

Assign renderer.material = new Material("Kırmızı"); and print it with Debug.Log("Materyal: " + renderer.material.name);.

Starter code

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
    }
}

Sample solution

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);
    }
}

Expected output

Materyal: Kırmızı

Practice Active Material Check

Check that the material exists with if (renderer.material != null) and print Debug.Log("Materyal aktif: " + renderer.material.name);.

Starter code

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
    }
}

Sample solution

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);
        }
    }
}

Expected output

Materyal aktif: Mavi

Questions and answers

Review the lesson questions together with their answers. To test yourself, solve the lesson interactively.

1 Which property is used in code to assign a new material to a MeshRenderer component on a GameObject at runtime?

  • renderer.color
  • renderer.sharedMesh
  • renderer.material Correct answer
  • renderer.transform

Explanation: Using the renderer.material property, the active material of the object is changed dynamically at runtime.

2 Assign Material

Question
cizici.____ = altinMateryal;
Answer
cizici.material = altinMateryal;

Explanation: The material property is used to assign a material to a MeshRenderer component.

3 Material and Renderer Terminology

Term Meaning
renderer.material Active material assigned at runtime
MeshRenderer Renders geometry with material in scene
Material Resource with surface color and texture
material.color Main tint color value of the material

All lessons in Intermediate