【Unity】オブジェクトの親子関係って意外とめんどいよね。でもね、こうやったら子供が取れたんすわ!
夏真っ盛りじゃないですか!
これは外いったら溶けそうです。
日射病、熱射病にお気を付けくださいまし。
ってことで、坂内です。
本日はHierachyにオブジェクトが親子関係で並んでる時の、取得方法についてです。
まずはこんな感じで、オブジェクトを並べてみました。
上のボタン群(3個)は「Set1」オブジェクトの子にあたり、下のボタン群(3個)は「Set2」の子供になっています。

CanvasにScriptを置いて、以下のコードをやったところ・・・
※PanelTransformにはPanelオブジェクトをアサインしています。
上の結果はこんな感じです。
ってことは、transform.GetComponentsInChildren()は子供以外の孫とかも持ってきちゃう感じですね。
さて次はGetChildの出番!
こうやると、下が返ってくる。
Panel
ってことで、GetChildは引数にintが必須です。
この場合は、特定のtransformの中に子供がどれだけいるかを使いループで取るような処理になるっぽいです。
あ、transform.childCountだと孫の数はとらないらしいです。
ってことは、Set1とかSet2に入ってる子供(ボタンオブジェクト)を取りだして、色々やりたい場合は、以下のコードでできるってわけかな。
※set1Tranには「Set1」オブジェクトをアサイン。
なんか以前にこんなコード書いたことありました・・・・
だめなコードですね!
第一、stringで判定するとか、新人かよと!(笑)
他にも、特定の名前の子供を取得するには、transform.FindChild("名前")とかって方法もあります。
この辺その時使える方でうまく使ってみてください!
ってことで、これにてアデュ~ノシ
これは外いったら溶けそうです。
日射病、熱射病にお気を付けくださいまし。
ってことで、坂内です。
本日はHierachyにオブジェクトが親子関係で並んでる時の、取得方法についてです。
まずはこんな感じで、オブジェクトを並べてみました。
上のボタン群(3個)は「Set1」オブジェクトの子にあたり、下のボタン群(3個)は「Set2」の子供になっています。

CanvasにScriptを置いて、以下のコードをやったところ・・・
public Transform panelTransform; |
※PanelTransformにはPanelオブジェクトをアサインしています。
上の結果はこんな感じです。
transform ⇒ Canvas |
ってことは、transform.GetComponentsInChildren
さて次はGetChildの出番!
Transform childTrans = transform.GetChild(0); |
こうやると、下が返ってくる。
Panel
ってことで、GetChildは引数にintが必須です。
この場合は、特定のtransformの中に子供がどれだけいるかを使いループで取るような処理になるっぽいです。
for (int i = 0; i < transform.childCount; i++ ) { |
あ、transform.childCountだと孫の数はとらないらしいです。
ってことは、Set1とかSet2に入ってる子供(ボタンオブジェクト)を取りだして、色々やりたい場合は、以下のコードでできるってわけかな。
public Transform set1Tran; |
※set1Tranには「Set1」オブジェクトをアサイン。
なんか以前にこんなコード書いたことありました・・・・
public Transform set1Tran; |
だめなコードですね!
第一、stringで判定するとか、新人かよと!(笑)
他にも、特定の名前の子供を取得するには、transform.FindChild("名前")とかって方法もあります。
この辺その時使える方でうまく使ってみてください!
ってことで、これにてアデュ~ノシ
Category: 開発日記(Unity)
« ネタがないので今週の動き。 | 【Unity】エディタ拡張も面白そうですよね(自分では何もしていない) »
コメント
子要素までが欲しいのにGetComponentsInChildrenで
孫要素までとってくるのでハマっていたので助かりました。感謝mm
nh #- | URL | 2017/12/20 22:31 [edit]
| h o m e |