【Unity】Unity3.x→unity4.xに変換した時の問題メモ

仕事でUnity3.5.7で作業していましたが、
購入したアセットの動作がUnity4.0以上じゃないと動かせないということで
プロジェクトをバックアップしてからUnity4にコンバートしてみました。
GameObjectのアクティブ設定のプロパティ名、メソッド名が変わったことは知っていましたが
Inspector上のアクティブチェックの挙動が変わることは予想外でした…

GameObject go = new GameObject("test");

Unity3.x
 go.active = true;
 go.SetActiveRecursively(true);

Unity4.x
 go.activeInHierarchy = true;
 go.SetActive(true);

Scriptは以上なんですけど

GameObject以下の子、孫登録されているGameObjectを取得したい時、

foreach(Transform child in go.transform.GetComponentsInChild<Transform>()){
 
}

こんな感じで自身を含めたTransformをループで回して再帰的に取得ができていました
GameObjectのインスタンスを取得している状態で
InspectorでActiveチェックを外したとしても動作をしていましたが、
Unity4からInspectorのチェックが外れているとGameObject以下すべてのComponent自体も無効として
foreach文が動作してくれませんでした・・・

うーん、Unity3.xで動いているものだからと安易にUnity4にアップデートして動作できますとは言えませんね…


子、孫検索は結構使っているので
調査しないといけませんね…

【送料無料】Unityマスターブック [ 和泉信生 ]

【送料無料】Unityマスターブック [ 和泉信生 ]
価格:3,150円(税込、送料込)

この記事へのコメント


この記事へのトラックバック