はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】親子関係のオブジェクトを取得する

はじめに

今回は親子関係のオブジェクトを取得する方法についての記事になります!

一つ親のオブジェクトであったり、子オブジェクトを取得する方法をいつも忘れてしまうので、備忘録としての意味合いも含めて残しておきたいと思います。

では早速やっていきましょう。

やり方

よく使いそうな4つの親子関係のオブジェクトの操作をまとめてみました。

using UnityEngine;
using System.Linq;

public class ParentTest : MonoBehaviour
{
    private void Start()
    {
        //一番上の親を取得する
        GameObject rootGameObject = transform.root.gameObject;

        //一つ上の親を取得する
        GameObject parentGameObject = transform.parent.gameObject;

        //一つ下の"Child"という名前の子を取得する
        GameObject childGameObject = transform.Find("Child").gameObject;

        //複数の子(孫を含む)を全て取得する LINQを使用していることに注意
        GameObject[] childGameObjects = GetComponentsInChidren<Transform>().Select(t => t.gameObject).ToArray();

        Debug.Log("root: " + rootGameObject.name);
        Debug.Log("parent: " + parentGameObject.name);
        Debug.Log("child: " + childGameObject.name);
        foreach(var item in childGameObjects)
        {
            Debug.Log("childs: " + item.name);
        }
    }
}

f:id:hanaaaaaachiru:20190722131831p:plain

f:id:hanaaaaaachiru:20190722130521p:plain

さいごに

transformコンポーネントを経由して親子関係のゲームオブジェクトを取得できることがやや忘れやすポイントだと思うので、注意してみてください。