Hi,
-- when the user click, youperform a ray cast from the center of the screen, and you send a global event "CHANGE" or something to the gameobject being hit.
-- for each "live" gamobject, implement a FSM using this "CHANGE" global event as a global transition, and perform any color change or material change when you receive that global event.
Does that make sense? Don't over think this, it's very simple actually.
bye,
Jean