転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

【Unity】子コンポーネントを取得する方法

Unityでゲームを作っていると、ボタンオブジェクトの子コンポーネントにあるテキストオブジェクトの名前を動的に出したいときが出てくる。
例えばRPGでいうと、アイテムを所持していないときは「なし」と表示し、アイテムを拾うと拾ったアイテム名を出したいなどだ。

そういったときは、ボタンオブジェクトにアタッチしたスクリプトから、アイテムの所持品を確認し、そこから子コンポーネントのテキストオブジェクトを取得してテキストを動的に変える方法をとっている。
ソースで表すとこんな感じ。

// アイテムの所持数をチェック
if (playerManager.model.itemBagList.Count >= tagId) {

    // 該当のItemModelを生成
    model = new ItemModel(playerManager.model.itemBagList[tagId - 1]);

    // 該当のアイテム名称を表示
    Text text = this.gameObject.transform.GetChild(0).gameObject.GetComponent<Text>();
    text.text = model.itemName;

} 

コンポーネントを取得しているのは、GetChildメソッドだが引数で渡しているのは、親オブジェクトから見た子コンポーネントの要素だ。
例えば以下のようなオブジェクト構成の場合、Text0オブジェクトを取得するにはGetChild(0)、Text1オブジェクトを取得するにはGetChild(1)を指定する。
f:id:uuc1h:20210523103450p:plain