編集のために一部のGameObjectを非活性状態(active==false)にしておいて、起動時にすべて活性状態にしたい場合があったとします。
上の例では、Holeの子にHole1,Hole2,Hole3があり、Hole1とHole2は非活性状態です(Hole3を編集するために、不要なHole1,Hole2を非活性状態にしています)。
起動時にHole1,Hole2を活性状態にしたいのですが、GameObject.FindGameObjectWithTag()やGameObject.Find()だと非活性状態のGameObjectができず、SetActiveRecursively()がUnity4非奨励になって使えません。
そんなときは、活性状態にしたいGameObjectの親GameObjectのtransformから子を取得して活性状態にすることができます。
—
GameObject holeRootObj = GameObject.Find("Hole");
foreach( Transform child in holeRootObj.transform)
{
GameObject childGObj = child.gameObject;
childGObj.SetActive(true);
}