[Unity]ゲームオブジェクトへのアクセスを楽にする自作ライブラリの紹介


自作のライブラリであるHierarchyNodeの紹介をします.
特に調査せずに作ったのでもしかしたら既に同じようなものがあるかもしれませんが.
https://github.com/yaegaki/HierarchyNode

作った背景

Unityでゲームを使用する上でTransform.Findをよく使うと思いますがこれが正直に言うと使いにくいです.
文字列で指定するため大文字や小文字は区別されるし,スペースがはいっているかどうかで結果が変わるなど.
実際に実行していみてエラーが出て初めてタイポに気が付くなどがよくあり,結構な時間が無駄になりました.

HierarchyNodeの機能

上の画像のCharacter1_LeftUpLegSpringCollider.radiusにアクセスしたい場合,
下のgifのようにコード補完を使用することができます.

実際に書いたコードはこれです.

void Start ()
{
    var node = new HierarchyNode.Generated.Unitychan_DynamicNode(this);
    var radius = node.c.Character1_Reference.c.Character1_Hips.c.Character1_LeftUpLeg.SpringCollider.radius;
}

導入

https://github.com/yaegaki/HierarchyNodeからクローンしてプロジェクトに入れるか,
HierarchyNode.unitypackageをダウンロードしてインポートしてください.

構成

HierarchyNodeはゲームオブジェクトからクラスを自動生成するエディタースクリプトと,自動生成されるクラスのベースとなるクラスからなります.

使い方

ヒエラルキーで対象のゲームオブジェクトを選択した状態でメニューのGameObject > HierarchyNode > Generateを実行します.

ヒエラルキーのゲームオブジェクトだけではなくプロジェクトのPrefabを選択することもできます.

Generateを実行するとHierarchyNode/Scripts/Generated配下に下のようなクラスが生成されます.

自動生成されたクラスは対象のGameObjectTransformNonoBehaviourで初期化することができます.
もし対象のゲームオブジェクトに配下のオブジェクトがある場合,Childrenプロパティーからアクセスすることができます.
Childrenプロパティーには別名のcが存在します.

最後に

issuesやpull requestなど大歓迎です!