アニメーションをエディターから作ろうとした時に、
あれ・・・?これってパスの取得できなくね・・・?
っておもったので、プログラミング初心者がパスを取得できるようにしてみました
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変数に追加していきます
ループが終わり、値を返してあげればできあがり!!って感じです