FC2ブログ
    11 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 01

    ハルシオンシステムの気ままBlog

    株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

     

    【ハルシオンブログ】あれ?何回もこの記事書いた気がする・・・・GameObjectの子供オブジェクトをとる方法をいくつか紹介。 

    また寒い日、暑い日の切り替えの激しい時期になりましたね。
    雨ばかりでじめじめしていて生きにくい!
    坂内っす。

    Unityで子オブジェクトをとる方法はいくつかあります。

    こんな構成の時にどんなものが取れるかみてみましょう。



    objParentは一番親のObjectをアサインしています。

    ①GetChildを使う

    using UnityEngine;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    for (int i = 0; i < objParent.transform.childCount; i++) {
    Debug.Log(objParent.transform.GetChild(i).name);
    }
    }
    }




    GetChildを使うと、子供のオブジェクトが取れます。
    でも、子供までで孫とかは取れません。

    ②foreachを使う

    using UnityEngine;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    foreach (Transform child in objParent.transform) {
    Debug.Log(child.name);
    }
    }
    }



    foreachで取ってもGetChildと同じく、孫までは取れません。



    ③GetComponentsInChildrenを使う

    using UnityEngine;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    var childrens = objParent.transform.GetComponentsInChildren();
    for (int i = 0; i < childrens.Length; i++) {
    Debug.Log(childrens[i].name);
    }
    }
    }


    全部取れます。



    ④LinqのEnumerable.OfTypeを使う

    using UnityEngine;
    using System.Linq;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    var childrens = objParent.transform.OfType();
    foreach (Transform trn in childrens) {
    Debug.Log(trn.name);
    }
    }
    }



    直下の子供だけ取れました。

    ⑤LINQ-to-GameObject-for-UnityのLinqを使う
    https://github.com/neuecc/LINQ-to-GameObject-for-Unity

    Linq to GameObjectを使うと簡単に子供とか親とかを取れます。


    using UnityEngine;
    using Unity.Linq;

    public class Blog20220516 : MonoBehaviour
    {
    public GameObject objParent;

    private void Start() {
    foreach (GameObject trn in objParent.Descendants()) {
    Debug.Log(trn.name);
    }
    }
    }



    こんな感じで簡単にとれる。

    何回もうちの記事でかいてた気がするが、子供オブジェクトの取り方を数パターン書いてみました。

    メモ程度に

    では、あでゅ~ノシ

    Category: 開発日記(Unity)

    tb 0 : cm 0   

    コメント

    コメントの投稿

    Secret

    トラックバック

    トラックバックURL
    →http://halcyonsystemblog.jp/tb.php/887-04f94244
    この記事にトラックバックする(FC2ブログユーザー)