Breakout game turning bricks isTrigger true failed

I am making a breakout game. There is a button that when energy become 30 or more, it can be pushed to make bricks trigger. The first time is always successful to make the bricks isTrigger true. But for the second time or third time, it may fail to change isTrigger to true. Here is the code:
using UnityEngine;
using System.Collections;

public class ChickenStateButton : MonoBehaviour {

	public GUITexture csAwaken;
	public GUITexture csNormal;
	public BoxCollider2D[] group;
	public float passThroughTime;
	public bool canPassThrough;

	// Use this for initialization
	void Start () {
		csAwaken = GameObject.Find ("ChickenStateAwaken").GetComponent<GUITexture> ();
		csNormal = GameObject.Find ("ChickenStateNormal").GetComponent<GUITexture> ();
		guiTexture.pixelInset = new Rect (Screen.width / 2.75f, Screen.height / -13.84444444f, Screen.width / 8.020833333f, Screen.height / 12.97916667f);
		passThroughTime = 5f;
		canPassThrough = false;
	}
	
	// Update is called once per frame
	void Update () {
	    if (Ball.energy < 30f) {
			guiTexture.texture = csNormal.texture;
		} else {
			guiTexture.texture = csAwaken.texture;
		}
		if (Input.touches.Length > 0) {
			for (int i = 0; i < Input.touchCount; i++) {
				if (this.guiTexture.HitTest (Input.GetTouch (i).position)) {
					if (Input.GetTouch (i).phase == TouchPhase.Ended) {
						if (Ball.energy >= 30f) {
						    passThrough ();
						    Ball.energy = 0f;
						}
					}
				}
			}
		}
		if (canPassThrough) {
			passThroughTime -= Time.deltaTime;
		} else {
			passThroughTime = 5f;
		}
		if (passThroughTime <= 0) {
			group =  GameObject.Find ("Groups").GetComponentsInChildren<BoxCollider2D> ();
			for (int i = 0; i < group.Length; i++) {
				group*.isTrigger = false;*
  •  	}*
    
  •  	canPassThrough = false;*
    
  •  }*
    
  • }*

  • private void passThrough () {*

  •  canPassThrough = true;*
    
  •  group = GameObject.Find ("Groups").GetComponentsInChildren<BoxCollider2D> ();*
    
  •  if (canPassThrough) {*
    
  •  	for (int i = 0; i < group.Length; i++) {*
    

_ group*.isTrigger = true;_
_
}_
_
}_
_
}*_

* void OnMouseDown () {*
* if (Ball.energy >= 30f) {*
* passThrough ();*
* Ball.energy = 0f;*
* }*
* }*
}
Can anyone explain why it will fail when second time or third time and how to change it?

Are you setting anything to inactive? Try GetComponentsInChildren (false).

You can’t mess with inactive parts

Try this code:

try{ 
    if (passThroughTime <= 0) {
        group = GameObject.Find ("Groups").GetComponentsInChildren ();
        for (int i = 0; i < group.Length; i++) {
            group*.isTrigger = false;*

}
}
catch(Exception e){
Debug.log(“Exception in turning off passthrough”);
}