Language:
more 

Archive 7月 2014

[Unity] 他オブジェクトと連携2 – GetChildとあと修正

以前、他オブジェクトと連携-FindとかGetComponentとかSendMessageとかという記事を書いたけど、ちょっと漏れがあったというか、どこに書いていいのやらというのがまだあったのと、修正点があったので続編です。

GetChild

相手の子供のみが対象になり、GetChild(int)の形で子供の中の何番目かを指定して取得する。どういう事かと言うと

ほぼこの形の処理のためにあるようなもの。childCountは子がいくつあるかという既定の関数。この場合は相手の指定がないので自分の子供をfor文で順に取ってきて、全ての子の名前をNewNameに変えている。Find系ではないので名前やタグや型に依存せず子供でさえあれば取ってこれるが、番号で特定のものを探すのは不確定なやり方になるので、子供全部に同じ処理をするとかそういうときに使う。

 

あと私が勘違いしていて、transform.Find()は子孫全ての中から探すものだと思って前の記事を書いていたのですが、実際はtransform.Find()が探す対象は子供のみです。孫以下に探す名前のオブジェクトがあっても無視されるのでご注意を。前の記事はすでに修正してあります。

以下、なんでこんな勘違いをしたかについての言い訳。
FindChild()っていう関数があるんですよ。文字通り対象の子供の中から探すための関数。でもそれってtransform.Find()と同じじゃないですか。だから私、transform.Find()は孫以下も含まれて使い分けるんだと思い込んでました。許してください。許してあげてください。こんなに泣いてるじゃないですか。

おふざけは置いておいて、混乱させてしまった方がいたら申し訳なかったです。なぜかFindChild()は公式リファレンスに載ってなくて疑問に思ってたんですが、同じ働きだから使う必要がなかったからだったとは…。私の勘違いのほうが使い勝手がいいと思うんですが。とはいえ、ただの混乱のもとなのでFindChild()は存在しないものと思ってしまったほうがよさそう。transform.Find()が探す対象は子供のみで孫以下は無視、これだけ記憶していただければ。

 

以上、他オブジェクトと連携する基本的な手段の追加と修正でした。