(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!

    

複数のGameObjectグループ化して扱えるパッケージ SelectionGroups【Unity】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2022.3.16f1


はじめに

今回はSelectionGroupsという複数のGameObjectをグループ化して、

グループ単位で操作が行えるUnityの機能(パッケージ)の紹介です!


オブジェクトを検索してまとめたり、Hierarchy上の構造とは別にオブジェクトをグループ化出来るので、

「名前やコンポーネント等で検索して、オブジェクトをグループ化したい」

「複数のオブジェクトをまとめて管理したいが、Hierarchy上では別々の場所にある」

みたいな時に便利です。


なお、Unity公式の機能ですが、

まだPreview版(大きな変更が加わる可能性がある)で、導入も必要です。





SelectionGroups

導入はお馴染みのPackage Managerを使って行います。

上部メニューのWindow/Package Managerからウィンドウを開き、


左上のプラスボタンから「Add package from git URL…」を選択、


com.unity.selection-groupsと入力した後にAddを押すだけで、


導入完了です。


次に使い方ですが、まずWindow/General/Selection Groupsからウィンドウが表示でき、


+ボタンのCreate Empty Groupでグループが作成出来ます。


するとウィンドウと、Hierarchy上にグループのオブジェクトが生成されます。


あとはこのグループにまとめたいGameObjectをドラック&ドロップするだけ。

なお、グループ外に持っていくと、新たなグループが生成されます。


このグループ上のオブジェクトを選択すると

Hierarchy上で選択した時と同じ挙動になり、そのまま編集等も可能です。


また、グループをクリックすると、Inspectorにグループの情報が表示され、

グループの名前や色等を変更出来ます。


さらにGroup Queryで任意のオブジェクトを検索してグループ化する事も可能です。

例えば「Skirt*」と入力すれば名前が「Skirt」で始まる全てのオブジェクトをまとめられます。


この検索方法はGoQLと呼ばれ、以下のようにかなり色々な検索が出来ます。


なお、グループ(SelectionGroup)は

プログラムから取得や追加等の操作をする事も可能です。

//SelectionGroupを使うために必要
using Unity.SelectionGroups;
//Inspectorで設定
[SerializeField]
private SelectionGroup _selectionGroup;

private void Start() {
  //グループに設定されているオブジェクトを取得
  IList<GameObject> members = _selectionGroup.Members;
}