こんにちは、今日はUnityのHierarchyの順序をスクリプトから変更する方法についてまとめていきます。
Table of Contents
確認環境
Unity 2018.4.15f1
Hierarchyの順序をスクリプトから変更する
以下の関数で兄弟内での順序を変更することができます。
引数には順序のインデックスを指定するため、一番上にする場合は0を指定します。
以下の例では上から2番目に移動することができます。
transform.SetSiblingIndex(1);
引数にマイナスや、兄弟オブジェクトの数より大きいインデックス等の範囲外の値を指定した場合、一番下に設定されます。
一番上に変更する場合
一番上にしたい場合は、インデックスで指定する他、以下の関数を呼び出すことでも変更できます。
transform.SetAsFirstSibling();
一番下に変更する場合
一番下にしたい場合は、インデックスで指定する他、以下の関数を呼び出すことでも変更できます。
transform.SetAsLastSibling();
現在の順序を取得する
現在の順序インデックスを取得するには以下の関数を使用します。
int型で現在のインデックスが返されます。
transform.GetSiblingIndex();
親オブジェクトを変更する
兄弟内で順序を変更するだけはなく、親オブジェクトを変更したい場合は以下の関数を使用します。
TransformのSetParent関数に親に設定したいオブジェクトのTransformを渡すと親を変更することができます。
transform.SetParent(parent.transform);
最上位に変更する場合
特定のオブジェクトの親に設定するのではなく、最上位に設定した場合、以下のようにSetParent関数の引数にnullを指定します。
transform.SetParent(null);
リンク
Transform-SetSiblingIndex – Unity スクリプトリファレンス
https://docs.unity3d.com/ja/current/ScriptReference/Transform.SetSiblingIndex.html
Unity – Scripting API: Transform.SetAsFirstSibling
https://docs.unity3d.com/ScriptReference/Transform.SetAsFirstSibling.html
Transform-SetAsLastSibling – Unity スクリプトリファレンス
https://docs.unity3d.com/ja/current/ScriptReference/Transform.SetAsLastSibling.html
Transform-GetSiblingIndex – Unity スクリプトリファレンス
https://docs.unity3d.com/jp/current/ScriptReference/Transform.GetSiblingIndex.html