Highlight 3D objects

Hello, Unity community!

How can I make an object change its emission to green when I hover my mouse over it, and ensure that it stays selected (green) even after I click it? Does anyone know how to achieve this?

public class Interaction : MonoBehaviour
{
    [SerializeField] private Renderer rend;
    private Color color = new Color32(31, 103, 39, 255);
    private List<Material> materials;
    bool isHighlighted;

    private void Awake()
    {
        materials = new List<Material>();
        materials.AddRange(rend.materials);
    }

    public void ToggleHighlight(bool value)
    {
        if (value)
        {
            foreach (var mat in materials)
            {
                mat.EnableKeyword("_EMISSION");
                mat.SetColor("_EmissionColor", color * 1);
            }
        }
        else
        {
            foreach (var mat in materials)
            {
                mat.DisableKeyword("_EMISSION");
            }
        }
    }

    private void OnMouseEnter()
    {
        ToggleHighlight(true);
    }

    private void OnMouseExit()
    {
        ToggleHighlight(false);
    }
}

Thank you!

Materials materials array of materials renderer:

Generally accessing .material / .materials is going to give you a fresh copy. (See docs for why and when)

https://discussions.unity.com/t/789181/5

https://discussions.unity.com/t/826696/5