I want my c# Script to be optimized.

I am building a Samsung GEAR VR game in UNITY 5.3 and for that I need my Script to be optimized.The below script is doing the job but I want it to b done the best optimized way.Please be soft am a newbie

Here is my scripts:

ArrowOnOff.cs:


   using UnityEngine;
   using System.Collections;
   public class ArrowsOnOff : MonoBehaviour {
   // Use this for initialization
   void Start () {
 GameObject.Find ("Arrow1").transform.localScale = new Vector3(0, 0, 0);
 GameObject.Find ("Arrow (2)").transform.localScale = new Vector3(0, 0, 0);
 /*
     [...]
 */
 GameObject.Find ("Arrow (28)").transform.localScale = new Vector3(0, 0, 0);
 GameObject.Find ("Arrow (21)").transform.localScale = new Vector3(0, 0, 0);
 }
  // Update is called once per frame
   void Update () {
    }
    //-------
 void OnTriggerEnter(Collider col)
  {
 if (col.tag == "1") 
 {
     Debug.Log ("hit");
     GameObject.Find ("Arrow1").transform.localScale = new Vector3(1, 1, 1);
 }
 ///---------
 if (col.tag == "2") 
 {
     Debug.Log ("hit");
     GameObject.Find ("Arrow (2)").transform.localScale = new Vector3(1, 1, 1);
 }
 /*
     [...]
 */
 if (col.tag == "30") 
 {
     Debug.Log ("hit");
     GameObject.Find ("Arrow (28)").transform.localScale = new Vector3(1, 1, 1);
 }
 ///---------
 if (col.tag == "24AGAIN") 
 {
     Debug.Log ("hit");
     GameObject.Find ("Arrow (21)").transform.localScale = new Vector3(1, 1, 1);
 }
  /// -------
 }
   //--------------------------------------------------------
   void OnTriggerExit(Collider col)
  {
 if (col.tag == "1")
 {
     GameObject.Find ("Arrow1").transform.localScale = new Vector3(0, 0, 0);
     Debug.Log ("Left");
 }
 ///---------
 if (col.tag == "2") 
 {
     Debug.Log ("hit2");
     GameObject.Find ("Arrow (2)").transform.localScale = new Vector3(0, 0, 0);
 }
 /*
     [...]
 */
 if (col.tag == "30") 
 {
     Debug.Log ("hit");
     GameObject.Find ("Arrow (28)").transform.localScale = new Vector3(0, 0, 0);
 }
 /// -------
 if (col.tag == "24AGAIN") 
 {
     Debug.Log ("hit");
     GameObject.Find ("Arrow (21)").transform.localScale = new Vector3(0, 0, 0);
 }
}

}
 //----------

Make a function that takes in arguments of string and int:

void functionName(string nameVar, int currInt)
{
    Debug.Log("hit");
    GameObject.Find(nameVar).transform.localScale = new Vector3(currInt, currInt, currInt);
}

Make a string array for all the tags that you might collide with:

string[] colliderTags {"1", "2", "30", "24AGAIN"};

I would suggest that the string of the tags could have something in common with the “Arrow” names like in the first if-statement. That way we can do a foreach loop for this string array:

void OnTriggerEnter(Collider col)
{
    foreach(string currTag in colliderTags)
    {
        if(col.tag = currTag)
        {
            functionName("Arrow" + currTag, 1,1,1);
        }
    }
}

and for OnTriggerExit

   void OnTriggerExit(Collider col)
    {
        foreach(string currTag in colliderTags)
        {
            if(col.tag = currTag)
            {
                functionName("Arrow" + currTag, 0,0,0);
            }
        }
    }

So when we collide with a collider that has tag “1” for example the function will start looking for “Arrow1” with GameObject.Find.