UnityでスクリプトからTransformコンポーネントを取得する方法
検証環境
Unity:5.6.1f1
Transformコンポーネント
Transformコンポーネントは、すべてのGameObjectに追加される基本的なコンポーネントです。
位置、回転、スケール、親子情報などシーン内のGameObjectにアクセスするために使用します。
空のオブジェクトを作成しても追加されます。
アタッチされたゲームオブジェクトのTransformコンポーネントにアクセス
アタッチされているC#スクリプトから自身のTransformへは簡単にアクセスできます。
MonoBehaviourを継承していればフィールドにありますので、
Transform myTransform = this.transform;
だけで使用可能です。
親子間のTransformコンポーネントにアクセス
親の場合
var parentTransform = this.transform.parent;
子の場合
var childTransform = this.transform.Find("child_name"); // 古い取得方法 //var childTransform_old = this.transform.FindChild("child_name");
“child_name"部分に、Hierarchyに表示されている子要素の名前を設定してください。
それ以外のTransformコンポーネントにアクセス
親や子を伝って取ることがほとんどだと思いますが、親子関係にないオブジェクトは検索して取得することになります。
var anotherTransform1 = GameObject.Find("object_name").transform; var anotherTransform2 = GameObject.Find("/parent/child").transform;
/で区切ることによって階層を指定して検索することもできます。
名前が同じものが複数ある場合は、最初に見つかったもの(Hierarchyの順とは限らない)が取得できますが、同じ階層で重複する名前は極力使わないようにしましょう。
また、Hierarchy上で灰色(Inspectorで使用をoff)にしている状態だと探せませんので、NullReferenceExceptionに注意してください。