【ハルシオンブログ】Unity+LinqtoGameObjectで、"子供のオブジェクトを全部xxx"系の処理が簡単にできる!
こんにちは!坂内です!
コロナ騒動になり飲みにいけなくなって早2か月?
早くおいしいもの食べに行きたくてうずうずが止まらない今日この頃でございます。
さてUnity+Linqのお話。
オブジェクトの子供や孫を取得する際に、普段だとこんな感じでやっています。

こんな感じでパッと消えます。
LinqにもこのGameObjectを触る用のものがあるみたいです。
【LINQ-to-GameObject-for-Unity】
https://github.com/neuecc/LINQ-to-GameObject-for-Unity
これを使うとこんな感じで書くことができます。
注意点としては、System.Linq: ではなく、Unity.Linq: になります。
Descendantsを使いましたが、他にも以下のようなものがあるようです。
Ancestors() : 親、親以上まで遡る
Descendants() : 子供、子供以下まで下る
Parent() : 親のみ
Children() : 子供のみ
といったものがあるようです。
これを使うと、指定オブジェクトの子供以下で「タグが"test"のものを取得」も簡単に可能です。
2、5、6の番号のオブジェクトにtestタグをつけています。

こんな感じでいろいろ使えそうですね!
では、あでゅ~ノシ
コロナ騒動になり飲みにいけなくなって早2か月?
早くおいしいもの食べに行きたくてうずうずが止まらない今日この頃でございます。
さてUnity+Linqのお話。
オブジェクトの子供や孫を取得する際に、普段だとこんな感じでやっています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Blog20200601 : MonoBehaviour {
public Transform itemParent;
void Start() {
DestroyItem();
}
void DestroyItem() {
foreach (Transform itemTran in itemParent) {
Destroy(itemTran.gameObject);
}
}
}

こんな感じでパッと消えます。
LinqにもこのGameObjectを触る用のものがあるみたいです。
【LINQ-to-GameObject-for-Unity】
https://github.com/neuecc/LINQ-to-GameObject-for-Unity
これを使うとこんな感じで書くことができます。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Linq;
public class Blog20200601 : MonoBehaviour {
public GameObject itemParentObj;
void Start() {
DestroyItem();
}
void DestroyItem() {
foreach (GameObject item in itemParentObj.Descendants()) {
Destroy(item);
}
}
}
注意点としては、System.Linq: ではなく、Unity.Linq: になります。
Descendantsを使いましたが、他にも以下のようなものがあるようです。
Ancestors() : 親、親以上まで遡る
Descendants() : 子供、子供以下まで下る
Parent() : 親のみ
Children() : 子供のみ
といったものがあるようです。
これを使うと、指定オブジェクトの子供以下で「タグが"test"のものを取得」も簡単に可能です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.Linq;
using System.Linq;
public class Blog20200601 : MonoBehaviour {
public GameObject itemParentObj;
void Start() {
DestroyItem();
}
void DestroyItem() {
foreach (GameObject item in itemParentObj.Descendants().Where(x => x.tag == "test")) {
Destroy(item);
}
}
}
2、5、6の番号のオブジェクトにtestタグをつけています。

こんな感じでいろいろ使えそうですね!
では、あでゅ~ノシ
Category: 開発日記(Unity)
« 【ハルシオンブログ】再生中の編集内容を保存したいとき。 | 【ハルシオンブログ】特定範囲のデータがほしいとき »
コメント
| h o m e |