LoginSignup
1
0

More than 1 year has passed since last update.

Hierarchyにあるオブジェクトのパスを取得する

Last updated at Posted at 2021-11-28

アニメーションをエディターから作ろうとした時に、
あれ・・・?これってパスの取得できなくね・・・?
っておもったので、プログラミング初心者がパスを取得できるようにしてみました
VRC用の拡張Editorを作ってみようの方で使いたいので、ここに軽く説明を残しておこうと思います
無駄なことをやってるかもしれないので、安定したコードを探しているのであれば、今回のコードの使用はお勧めできません
お勧めはできませんが、その場しのぎにはなると思います

作ったコード

private static string GetHierarchyPath(GameObject targetObj)
{
    List<GameObject> objPath = new List<GameObject>();
    objPath.Add(targetObj);
    for (int i = 0; objPath[i].transform.parent != null; i++)
        objPath.Add(objPath[i].transform.parent.gameObject);
    string path = objPath[objPath.Count - 1].gameObject.name;
    for (int i = objPath.Count - 2; i >= 0; i--)
        path += "/" + objPath[i].gameObject.name;

    return path;
}

メソッドの呼び出し

string path = GetHierarchyPath(GameObject);

コードの説明

最初にListで変数を作り、ターゲットのゲームオブジェクトを入れます
リストができたら、for文を使って、オブジェクトの親がある時はループするようにします
最初のオブジェクトは、一番最初に入れたターゲットのゲームオブジェクトで、
一度ループすると、ターゲットの親が次のターゲットのゲームオブジェクトになります
また、ループする度にゲームオブジェクトをリストに追加します
次にStringで変数を作り、リストに入れたオブジェクトを[.Count - 1]で、一番後ろに入っているゲームオブジェクトの名前を追加します
string変数ができたら、for文を使って、今さっき追加したリストを、逆からstring変数に追加していきます
ループが終わり、値を返してあげればできあがり!!って感じです

1
0
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
1
0