2013年07月17日

【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円(税込、送料込)

ラベル:unity
posted by ヒイロ at 15:04| 福岡 ☀| Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

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