非活性状態のGameObjectを活性状態にする

編集のために一部の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);
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です