How do you add a material and change the size in Mesh Renderer in C# scripting?

I have written this code to generate a procedural cube Sphere.

However I am having some trouble adding materials to the Mesh Renderer via c# scripting.

Can someone please explain to me how to add a material and add/change it’s element size in the mesh renderer via scripting?

Here is my script and it fails to produce the material I want.

[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
[ExecuteInEditMode()]
public class CubeSphere : MonoBehaviour {

public float radius = 1f;

public Material Planet = Resources.Load("Planet", typeof(Material)) as Material;

public int gridSize;


private Mesh mesh;
private Vector3[] vertices;
private Vector3[] normals;
private Color32[] cubeUV;

private void Awake () {
	Generate();
}

private void Generate() {
    GetComponent<MeshFilter>().mesh = mesh = new Mesh();
    GetComponent<MeshRenderer>().material = Planet;

    mesh.name = "Procedural Sphere";
    CreateVertices();
	CreateTriangles();
    CreateColliders();
}

Use MeshRenderer.materials or MeshRenderer.sharedMaterials.

You’ll be working with arrays, so adding, removing or reordering materials would be done on a material array which then is set using any of the two properties mentioned above. Here’s one example loading materials into a list, which then is converted to an array.

MaterialExtensions.cs (Extension method for easy resource loading)

using UnityEngine;
using System.Collections.Generic;

public static class MaterialExtensions
{
    public static void AddResource(this ICollection<Material> materials, string resource)
    {
        Material material = Resources.Load(resource, typeof(Material)) as Material;
        if (material)
            materials.Add(material);
        else
            Debug.LogWarning("Material Resource '" + resource + "' could not be loaded.");
    }
}

CubeSphere.cs

using UnityEngine;
using System.Collections.Generic;

[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
[ExecuteInEditMode()]
public class CubeSphere : MonoBehaviour
{
    public float radius = 1f;
    public int gridSize;

    private Mesh mesh;
    private Vector3[] vertices;
    private Vector3[] normals;
    private Color32[] cubeUV;

    private void Awake()
    {
        Generate();
    }

    private void Generate()
    {
        GetComponent<MeshFilter>().mesh = mesh = new Mesh();

        List<Material> materialList = new List<Material>();
        materialList.AddResource("Planet");
        materialList.AddResource("Moon");
        materialList.AddResource("Sun");

        GetComponent<MeshRenderer>().materials = materialList.ToArray();

        mesh.name = "Procedural Sphere";
        CreateVertices();
        CreateTriangles();
        CreateColliders();
    }
    
    // ...