はじめに
この記事ではUnityで「optimize transform hierarchy」を使ってモデルの階層構造を削減する方法を紹介します。
例えば、ユニティちゃんのモデルの手を変更する際、ここまで深い階層まで下りる必要があります。
これを「Find」するにしても、階層が深いほどCPUの負荷は大きくなります。
そこで、「optimize transform hierarchy」を使用するとこうなります。
階層が浅くなってすっきりしました。この方法を紹介します。
optimize transform hierarchyの使い方
ユニティーちゃんをHierarchyにセットし、Animatorコンポーネント上で右クリックしてください。
すると、「optimize transform hierarchy」があるので、それをクリック。階層が最適化されます。
しかし、これでは取得したかった手のオブジェクトが非表示になってしまいました。
「optimize transform hierarchy」はコンポーネントが付いていないオブジェクトは表示されないのです。
任意のオブジェクトの表示
optimize transform hierarchy を使用すると、Mesh等のコンポ―ネントが付いていないオブジェクトは表示されません。
表示する場合は、Asset/unityChan/Models フォルダへ行き、unitychan.fbxをクリック。Rigタグを選択し、Optimize Game Objectsにチェックを入れてください。
そして、Extra Transforms to Expose より、Hierarchyに表示したいオブジェクトを選択してください。すると、Hierarchyに表示されます。
これで表示されるようになりました。
この状態なら、より浅い階層のパスで「GameObject.Find」で検索できるようになりました。
ただし、アバターによってはHierarchyに表示されないものもあります。
その場合は以下の方法を試してみてください。
Hierarchyに出てこないときの対処法
Optimize Game Objects の設定を行ってもオブジェクトがHierarchyに現れないことがあります。そういうときは、コードが入っていないダミーのスクリプトを作成し、取り付けてください。
コンポ―ネントがあれば、設定を行わなくてもoptimize transform hierarchy で最初からHierarchyに現れます。