Change material when an event occurs

Building a demo for my 3d platformer/racing game and when a player reaches a certain point or object (like a portal that spawns enemies), i’d like to change some of the surrounding object’s materials. for example i have a lot of light-blue neon that should change into red neon, i don’t need to change all materials, just those of the objects in range so i went with Physics.OverlapSphere and it triggers the surrounding objects, returns all Debug.Logs but the materials still aren’t swapped.

No compiling errors.

 public class InfectedPortal : MonoBehaviour {
            public int virusCount;
            public GameObject barrier;
            public GameObject enemy;
            public GameObject portalOpens;
            public GameObject activePortal;
            public GameObject spawningEffect;
            Material mat;
            public Material redNeon;
            Renderer rend;
            Rotater rot;
            private void Start()
                rot = GetComponent<Rotater>();
            private IEnumerator Spawn () {
                Collider[] hitColliders = Physics.OverlapSphere(transform.position, 100);
                foreach (Collider c in hitColliders)
                    Debug.Log("checking array");
                    rend = c.GetComponent<Renderer>();
                    if (rend != null)
                        mat = rend.material;
                        if ( == "Neon Cyan (Instance)")
Debug.Log("About to change color")
                            mat = redNeon;
    //After this it's activating & deactivating particle effects etc so no point to include that here

Is Renderer a component of Collider?

Will GetComponent work to find siblings?
I think try to get to the GameObject of the Colldier before getting the renderer.

something like

rend = c.transofrm.parent.GetComponent();

You might need to check rend for null before this point.

Instead of:

mat = redNeon;

You should do:

rend.material = redNeon;

…to change the material on the renderer.