[Unity] ヒエラルキー上のGameObjectのソート

ヒエラルキー上に存在するGameObjectをソートする方法のメモ書きです。
これを行うことで、名前順や座標順などさまざまな条件でGameObjectをソートできるようになります。

■方針
GameObjectの順序を指定するメソッドTransform.SetSiblingIndex()を用いることで実現できます。
一つ前の記事に簡単な使い方を書いたので必要ならご一読ください。

このメソッドは処理を返した時点で順序が反映されてしまうので、ソートを行うには一工夫必要です。
今回は、ひとつ下の階層のGameObjectを自力で取得→テンポラリのリストに格納→これに対してソート→ソート結果をTransform.SetSiblingIndex()で反映するというやり方で実現します。

■スクリプト
以下スクリプトをソートしたい対象のオブジェクトにアタッチします。

今回は名前順でソートするようにしました。
もし、座標順など異なる条件でソートしたい場合は★マーク直下の行を修正してください。

試しに以下ヒエラルキー上の「Stage」にアタッチしてみます。

gameobjsort1

アタッチしたら「Sort Game Object(Script)」のコンテキストメニューから「Sort game object」を選択してソートを実施します。
例では以下のようになります。

gameobjsort2

「Stage」配下のGameObjectが名前順でソートされていることが確認できます。
エディタ拡張にGameObjectソートの機能を持たせられればヒエラルキーの整理がスムーズになるかもしれませんね。

LEAVE A REPLY

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.