Multiple events into one event

Hello , I made many delegates, (clickA,clickB,clickC… etc…)
each touch will trigger an action “destroy()”
i have 34 prefabs ( each for a letter in the arabic alphabet)
i attached to each letter a script like so :
using UnityEngine;
using System.Collections;

public class touchA : MonoBehaviour {

	void OnEnable()
	{
		Fly fly = GetComponent<Fly>();
		Mainkeyboard.clickA += fly.destroy;
	}
	void OnDisable()
	{
		Fly fly = GetComponent<Fly>();
		Mainkeyboard.clickA -= fly.destroy;
	}

}

So the Question is instead of having to make 34 scripts and then attach each one to a prefab, Am i not able to make one script , that gets attached to prefab and then from a drop down menu(List) and pick which delegate i want??
thank you for your time.
here is my main delegate handler.

using UnityEngine;

using System.Collections;

public class Mainkeyboard : MonoBehaviour 
{
	public delegate void ClickAction();

	public static event ClickAction clickA;
	public static event ClickAction clickS;
	public static event ClickAction clickD;
	public static event ClickAction clickF;
	public static event ClickAction clickG;
	public static event ClickAction clickH;
	public static event ClickAction clickJ;
	public static event ClickAction clickK;
	public static event ClickAction clickL;
	public static event ClickAction clickL2;
	public static event ClickAction clickL3;
	public static event ClickAction clickQ;
	public static event ClickAction clickW;
	public static event ClickAction clickE;
    public static event ClickAction clickR;
	public static event ClickAction clickT;
	public static event ClickAction clickY;
	public static event ClickAction clickU;
	public static event ClickAction clickI;
	public static event ClickAction clickO;
	public static event ClickAction clickP;
	public static event ClickAction clickP2;
	public static event ClickAction clickP3;
	public static event ClickAction clickQ2;
	public static event ClickAction clickZ;
	public static event ClickAction clickX;
	public static event ClickAction clickC;
	public static event ClickAction clickV;
	public static event ClickAction clickB;
	public static event ClickAction clickN;
	public static event ClickAction clickM;
	public static event ClickAction clickM2;
	public static event ClickAction clickM3;
	public static event ClickAction clickM4;
}

Declare a public integer and use it to access the event array :

myEvents[eventIndex]();

By “around 30 prefabs”, you mean 30 instances of the same prefab right ?

Considering you have all of your prefabs with the given letter as name then you could simplify by subscribing all of them to one event and the performing a generic check:

public class Mainkeyboard :MonoBehaviour{
    public delegate void HandlerEvent(string key);
    public static event HandlerEvent OnPress = new HandlerEvent((key)=>{});

    void Update(){
        // Check if pressed
        // pass the press key to the event
        if(Input.anyKeyDown)OnPress(Input.inputString);
    }
}

public class Touch:MonoBehaviour{
   private string givenName;
   void Start()
   {
       givenName = gameObject.name;
       Mainkeyboard.OnPress += CheckKey;
   }
   void CheckKey(string key){
       if(key == givenName)// Do what it should
   } 
   // Remember to remove the subscription on destroy
}

Now you may have to work that out a little since Input.inputString works with Ascii and I would think arabic letters are unicode.

Also read the doc as it seems to require a little parsing Unity - Scripting API: Input.inputString