ソースコード
using UnityEngine; /// <summary> /// GameObject 型の拡張メソッドを管理するクラス /// </summary> public static class GameObjectExtensions { /// <summary> /// ルートとなるオブジェクトを返します /// </summary> public static GameObject GetRoot(this GameObject self) { var t = self.transform; for (; ; ) { var parent = t.parent; if (parent == null) { break; } t = parent; } return t.gameObject; } } /// <summary> /// Component 型の拡張メソッドを管理するクラス /// </summary> public static class ComponentExtensions { /// <summary> /// ルートとなるオブジェクトを返します /// </summary> public static GameObject GetRoot(this Component self) { var t = self.transform; for (; ; ) { var parent = t.parent; if (parent == null) { break; } t = parent; } return t.gameObject; } }
使い方
gameObject.GetRoot();
追記
@baba_s_ ブログの投稿みました。ルートオブジェクトの取得は
http://t.co/4gYsOlZApE
でも出来ますね。知ってたらゴメンナサイ。
— narudesign (@narudesign_dev) 2014, 8月 6
ルートオブジェクトは Transform.root でも取得できるようです
gameObject.transform.root;
narudesign 様ありがとうございます!