0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

NGUIでUIGrid直下のUIWidgetオブジェクトを取得

Last updated at Posted at 2015-12-15

NGUIでスクロールビューを作成するとき、Gridを使ってオブジェクトを整列したりしますよね。
その際、Gridに含まれているオブジェクトを動的に取得してゴニョゴニョしたい事があります。
子オブジェクトの習得自体は、GetComponentsInChildren<UIWdget> などとすればよいのですが、これだとGrid以下の”全ての”オブジェクトが習得されてしまい、扱いに困る事があります。

そういう時にLINQを使うことで簡単にGrid直下のオブジェクトだけを取得できますので、方法を紹介します。


// 検索元のスクロールビューをエディターから設定(もちろん自分で取得しても良い)
public UIScrollView scview;

void hoge() {
// UIScrollViewの子であるUIGridを取得
UIGrid grid = scview.GetComponentInChildren<UIGrid>();

// Grid直下のWidgetのみを取得
UIWidget[] mScrollObjs = grid.GetComponentsInChildren<UIWidget> ().Where(obj => obj.transform.parent == grid.transform).ToArray();
}

やってる事は単純で、where句でtransformを比較してるだけです。
また、ToArray()を使うことで結果を配列として取得しています。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?