Need to access multiple gameObjects same component( script) at same time from another script

I have tried everything in my knowledge for last 2 days to access multiple gameObjects (10) which has same scripts attach to them from another script , but I can’t seem to get any where close to access the script of all multiple gameObjects at same time . Please help
**I want to access all gameObjects ( buttons ) which has “ChangeColor” script **

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class onClick1 : MonoBehaviour {

	public Text ScoreText;
	private int Count = 10;
	private int wrongAnswer = -5;
	public bool hello;
	public GameObject Butt;


	public    void SayHello(  bool hello = false ) {

		Butt =  GameObject.FindGameObjectsWithTag("Button");
		
      if (GetComponent<Image> ().color == GameObject.FindGameObjectWithTag ("DisplayButton").GetComponent<Image> ().color) {

			GameObject thePlayer = GameObject.FindGameObjectWithTag("GameController");
			DisplayColor displayColor = thePlayer.GetComponentInChildren <DisplayColor>();
			


			ChangeColor[] ChangeColor1 = Butt.GetComponent<ChangeColor>;
			


			
			hello = true;
			displayColor.changeColor();
			ChangeColor1.ColorME();
			ScoreText.text = "SCORE: " + Count;

		
		
		
		} else if (GetComponent<Image> ().color != GameObject.FindGameObjectWithTag ("DisplayButton").GetComponent<Image> ().color) {
	
			hello = false;
			ScoreText.text = "SCORE: " + wrongAnswer;
		
		}
		}
	
}

I would suggest to use events mechanism. You should create something like EventManager and attach it to some dummy GameObject (or something like GameController object). Then, create static public event as it’s described here: https://unity3d.com/learn/tutorials/modules/intermediate/scripting/events . If it should be static or not static is arguable, but for simplicty lets leave it as static.

In the script attached to each button you subscribe to the newly created event. Just remember to unsubscribe in OnDestroy() or whenever you don’t need to be subscribed anymore.
Then, just trigger the event directly from EventManager or by exporting public function like “NotifySomething” and all subscribed objects will execute theirs callback that can for example change the color of the button. Hope that helps.

ChangeColor changeColors = FindObjectsOfType();
foreach(ChangeColor cc in changeColors){

  }

This will find all instances of ChangeColor on active objects.

The easiest one is to make a global manager that manages all "button"s.

For instance, I would make a manager script :

    public class ButtonManager : MonoBehaviour
    {
        public static ButtonManager instance;
        public List<Button> buttonList;
        void Awake()
        {
            if (instance != null)
                instance = this;
            else
                Debug.LogError("Already created.");
            Destroy(this);
        }
        public void Enlist(Button btn)
        {
            buttonList.Add(btn);
        }
    }

Then modify the button script to enlist itself whenever it is made.

    public class Button : MonoBehaviour
    {
        void Awake()
        {
            ButtonManager.instance.Enlist(this);
        }
    }