LoginSignup
9
9

More than 5 years have passed since last update.

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

Posted at

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

作った背景

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

HierarchyNodeの機能

hierarchy.png

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

coding.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を実行します.
menu.png

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

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

generated.png

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

最後に

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

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9