【ハルシオンブログ】あれ?何回もこの記事書いた気がする・・・・GameObjectの子供オブジェクトをとる方法をいくつか紹介。
また寒い日、暑い日の切り替えの激しい時期になりましたね。
雨ばかりでじめじめしていて生きにくい!
坂内っす。
Unityで子オブジェクトをとる方法はいくつかあります。
こんな構成の時にどんなものが取れるかみてみましょう。

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

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

③GetComponentsInChildrenを使う
全部取れます。

④LinqのEnumerable.OfTypeを使う

直下の子供だけ取れました。
⑤LINQ-to-GameObject-for-UnityのLinqを使う
https://github.com/neuecc/LINQ-to-GameObject-for-Unity
Linq to 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)
« 【ハルシオンブログ】プレハブが使っているリソースを調べる | 【ハルシオンブログ】Unityで作ったC#スクリプトの文字コード »
コメント
| h o m e |